commonmeta-ruby 3.2.15 → 3.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/bin/commonmeta +1 -1
- data/lib/commonmeta/author_utils.rb +1 -1
- data/lib/commonmeta/cli.rb +17 -0
- data/lib/commonmeta/crossref_utils.rb +56 -14
- data/lib/commonmeta/readers/json_feed_reader.rb +25 -1
- data/lib/commonmeta/utils.rb +37 -0
- data/lib/commonmeta/version.rb +1 -1
- data/spec/cli_spec.rb +27 -3
- data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/doi_prefix/doi_prefix_by_blog.yml +997 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/doi_prefix/doi_prefix_by_uuid.yml +256 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_blog.yml +997 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_blog_unknown_blog_id.yml +49 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_uuid.yml +256 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_uuid_unknown_uuid.yml +49 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_id.yml +997 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_post_uuid.yml +389 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_post_uuid_specific_prefix.yml +389 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item/by_uuid.yml +136 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/blog_post_with_non-url_id.yml +136 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_with_organizational_author.yml +91 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_rogue_scholar_with_organizational_author.yml +91 -0
- data/spec/readers/json_feed_reader_spec.rb +68 -0
- data/spec/utils_spec.rb +8 -0
- data/spec/writers/crossref_xml_writer_spec.rb +28 -0
- metadata +15 -2
@@ -0,0 +1,136 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://rogue-scholar.org/api/posts/1898d2d7-4d87-4487-96c4-3073cf99e9a5
|
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: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Age:
|
22
|
+
- '0'
|
23
|
+
Cache-Control:
|
24
|
+
- public, max-age=0, must-revalidate
|
25
|
+
Content-Length:
|
26
|
+
- '8589'
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Date:
|
30
|
+
- Sun, 18 Jun 2023 05:14:41 GMT
|
31
|
+
Etag:
|
32
|
+
- '"m63byipmbt6mf"'
|
33
|
+
Server:
|
34
|
+
- Vercel
|
35
|
+
Strict-Transport-Security:
|
36
|
+
- max-age=63072000
|
37
|
+
X-Matched-Path:
|
38
|
+
- "/api/posts/[slug]"
|
39
|
+
X-Vercel-Cache:
|
40
|
+
- MISS
|
41
|
+
X-Vercel-Id:
|
42
|
+
- fra1::iad1::ww9vj-1687065281458-7b5cddd0bd21
|
43
|
+
Connection:
|
44
|
+
- close
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: '{"id":"tag:blogger.com,1999:blog-4948885059517209129.post-2525787567927280589","uuid":"1898d2d7-4d87-4487-96c4-3073cf99e9a5","url":"http://sfmatheson.blogspot.com/2023/01/quintessence-of-dust-2023-restart-why.html","title":"Quintessence
|
48
|
+
of Dust 2023 restart: the why","summary":"It''s early January 2023, a little
|
49
|
+
before sunset in Tucson. Live image below, showing the glorious Santa Catalina
|
50
|
+
mountains (the snow on the upper reaches is more apparent earlier in the day)
|
51
|
+
and my dinner preparations (shrimp and veggies on the grill).I''ve decided
|
52
|
+
to start writing here at Quintessence of Dust, after another long hiatus.
|
53
|
+
Here are some of my reasons.1. I like to write, and I have things to say,
|
54
|
+
and I self-identify as an author. For eight years, I have co-organized and
|
55
|
+
taught in...","date_published":"2023-01-09T03:03:00Z","date_modified":"2023-04-02T21:17:07Z","date_indexed":"1970-01-01T00:00:00+00:00","authors":[{"url":null,"name":"Stephen
|
56
|
+
Matheson"}],"image":null,"content_html":"It''s early January 2023, a little
|
57
|
+
before sunset in Tucson. Live image below, showing the glorious Santa Catalina
|
58
|
+
mountains (the snow on the upper reaches is more apparent earlier in the day)
|
59
|
+
and my dinner preparations (shrimp and veggies on the grill).<div class=\"separator\"
|
60
|
+
style=\"clear: both; text-align: center;\"><a href=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghgBx9BU21qMDFnLxgHmnsl6TQVfb3QCwOXrC1zcXq7WH9gN8E0TcH3pTslRBG6O8mb5gcuF9JVtDlJ2je6dFcfyzKE4OD38-ftr66nBxddo892_NkyuevrrX65ndSbwmXMaLh3F5yiqU1QIj8JtA8FLkKOcHOEVwVafz0rzh7PejbFzp3XT25nQxc/s4032/Jan%207.jpg\"
|
61
|
+
style=\"clear: right; float: right; margin-bottom: 1em; margin-left: 1em;\"><img
|
62
|
+
border=\"0\" data-original-height=\"4032\" data-original-width=\"3024\" height=\"320\"
|
63
|
+
src=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghgBx9BU21qMDFnLxgHmnsl6TQVfb3QCwOXrC1zcXq7WH9gN8E0TcH3pTslRBG6O8mb5gcuF9JVtDlJ2je6dFcfyzKE4OD38-ftr66nBxddo892_NkyuevrrX65ndSbwmXMaLh3F5yiqU1QIj8JtA8FLkKOcHOEVwVafz0rzh7PejbFzp3XT25nQxc/s320/Jan%207.jpg\"
|
64
|
+
width=\"240\" /></a></div><br /><div><div>I''ve decided to start writing here
|
65
|
+
at <i>Quintessence of Dust</i>, after another long hiatus. Here are some of
|
66
|
+
my reasons.</div><div><br /></div><div>1. I like to write, and I have things
|
67
|
+
to say, and I self-identify as an author. For eight years, I have co-organized
|
68
|
+
and taught in the <a href=\"https://meetings.cshl.edu/courses.aspx?course=C-WRITE&year=23\"
|
69
|
+
target=\"_blank\">Scientific Writing Retreat at Cold Spring Harbor Laboratory</a>.
|
70
|
+
I''m a writer and I need to write, if only for myself.</div><div><br /></div><div>2.
|
71
|
+
I have an idea for a book, along with some introductory work (but no sample
|
72
|
+
chapters yet) and writing here will help me develop those thoughts. The idea
|
73
|
+
is over twelve years old and has never faded away, which I take to mean that
|
74
|
+
I need to get it out of my system somehow.</div><div><br /></div><div>3. I
|
75
|
+
have other ideas kicking around in my head and most of them are worth writing
|
76
|
+
about. I have one new intellectual passion that is totally worth writing about:
|
77
|
+
<a href=\"https://skyislandalliance.org/the-sky-islands/\" target=\"_blank\">the
|
78
|
+
Sky Islands</a> that nearly surround us here in Tucson.</div><div><br
|
79
|
+
/></div><div>4. I have an exciting new job with great new people at <a href=\"https://plos.org/\"
|
80
|
+
target=\"_blank\">an organization</a> that''s all in for <a href=\"https://plos.org/open-science/\"
|
81
|
+
target=\"_blank\">open science</a>. I recently turned over the tens digit
|
82
|
+
on my age-o-meter. My kids will very soon be all out of college. (One is about
|
83
|
+
to start a postdoc!) All of this led, predictably, to a spasm of reflection
|
84
|
+
on projects and vision. One clear result is that I''m feeling more inspired.<span><a
|
85
|
+
name=''more''></a></span></div><div><br /></div><div>5. The demise of Twitter
|
86
|
+
has led to a lot of <a href=\"https://www.theatlantic.com/technology/archive/2022/11/twitter-facebook-social-media-decline/672074/\"
|
87
|
+
target=\"_blank\">useful commentary</a> about the nature of social media.
|
88
|
+
I left Facebook two years ago and all but left Twitter two months ago. I''m
|
89
|
+
on a <a href=\"https://fediscience.org/explore\" target=\"_blank\">good
|
90
|
+
server at Mastodon</a> and I like it; maybe microblogging there can satisfy
|
91
|
+
my desire for conversation and connection. But <a href=\"https://www.theverge.com/23513418/bring-back-personal-blogging\"
|
92
|
+
target=\"_blank\">this recent piece</a> at <i>The Verge</i> by <a href=\"https://moniquejudge.com/\"
|
93
|
+
target=\"_blank\">Monique Judge</a> convinced me that blogging could (again)
|
94
|
+
have a place in the future.</div><div><br /><div>Here''s her summary, emphasis
|
95
|
+
mine:</div><div><blockquote>At the end of the day, we don’t know what is going
|
96
|
+
to happen next with Twitter or any of these platforms. We don’t know what
|
97
|
+
changes <a href=\"https://www.techtarget.com/whatis/definition/Web-30\" target=\"_blank\">Web
|
98
|
+
3.0</a> is going to bring to the internet. We do know that <b>we will all
|
99
|
+
still be here, wanting to share our thoughts, talk about anything and everything,
|
100
|
+
and commune with our people</b>. Personal blogging is the simplest and fastest
|
101
|
+
way to do all of that. </blockquote></div><div>That''s what I want! A
|
102
|
+
place to write, and (if I''m lucky) a place to discuss and \"commune\" with
|
103
|
+
people. That used to happen a lot at <i>Quintessence of Dust</i>.<span></span></div></div></div><div><br
|
104
|
+
/></div><div>Okay, but why here? This blog is over 15 years old and was started
|
105
|
+
when I was a Christian believer. <a href=\"https://sfmatheson.blogspot.com/2007/08/kicking-off-my-blog.html\"
|
106
|
+
target=\"_blank\">Its founding themes</a> were anchored in a desire to help
|
107
|
+
Christians understand and enjoy biology, to help them shake free of misinformation
|
108
|
+
and dishonesty. It has twice languished through long hiatuses and was <a href=\"https://sfmatheson.blogspot.com/p/about.html\"
|
109
|
+
target=\"_blank\">remodeled</a> back in 2017 a few years after I deconverted.
|
110
|
+
Maybe it''s time to start anew? I think not, for many of those same reasons:
|
111
|
+
I''m still a biologist who loves science, still worried about misinformation,
|
112
|
+
and still rooted in the power of scientific explanation. I''m still a bardolator
|
113
|
+
and a Red Sox fan. <a href=\"https://sfmatheson.blogspot.com/p/about.html\">I''m
|
114
|
+
still me</a>, and <i>Quintessence of Dust</i> is still my blog. The new <a
|
115
|
+
href=\"https://sfmatheson.blogspot.com/p/about.html\" target=\"_blank\">About
|
116
|
+
page</a> is slightly remodeled from 2017, and hints at the next post, which
|
117
|
+
will outline some new goals and ongoing projects.</div><div><br /></div><div>A
|
118
|
+
final note on inspiration, from Imani Perry, writing in her newsletter (<a
|
119
|
+
href=\"https://newsletters.theatlantic.com/unsettled-territory/\" target=\"_blank\">Unsettled
|
120
|
+
Territory</a>) at <i>The Atlantic</i>. The piece is \"<a href=\"https://newsletters.theatlantic.com/unsettled-territory/63af3facace609003751bacc/becoming-writer-habit-journalism/\"
|
121
|
+
target=\"_blank\">Writing is a Democratic Art</a>.\" It''s for subscribers
|
122
|
+
only but here is her challenge:</div><div><blockquote>Thinking and writing
|
123
|
+
at a faster pace stretched me and gave me greater confidence. Sometimes I
|
124
|
+
changed my mind about what I’d written a day later. But that was okay; a newsletter
|
125
|
+
is a moment in time. Writing it each week gave me a lovely rhythm in what
|
126
|
+
has otherwise been a difficult and disorienting season in history. Feeling
|
127
|
+
stuck can get you stuck. But writing can, and should, inspire deeds.</blockquote></div>","tags":["Introduction"],"language":"en","references":[],"blog_id":"5764g49","blog":{"id":"5764g49","title":"Quintessence
|
128
|
+
of Dust","description":"<i>Quintessence of Dust</i> explores science, society,
|
129
|
+
and human nature, focusing on genetics, development, evolution, neuroscience,
|
130
|
+
systems biology, and topics related to scientific literacy. I occasionally
|
131
|
+
discuss intelligent design, creationism, science denial, and other political/social
|
132
|
+
influences on scientific literacy. Additional topics: philosophy, baseball,
|
133
|
+
scientific culture, and Shakespeare. My main theme is <b><u>scientific explanation</u></b>.","language":"en","favicon":null,"feed_url":"http://sfmatheson.blogspot.com/feeds/posts/default","home_page_url":"http://sfmatheson.blogspot.com/","user_id":"8498eaf6-8c58-4b58-bc15-27eda292b1aa","created_at":"2023-05-31T14:21:27+00:00","indexed_at":"2023-04-18","feed_format":"application/atom+xml","license":"https://creativecommons.org/licenses/by/4.0/legalcode","generator":"Blogger
|
134
|
+
7.00","category":"Social Sciences","prefix":"10.59350","modified_at":"2023-06-06T20:22:00+00:00","version":"https://jsonfeed.org/version/1.1","backlog":true,"authors":null}}'
|
135
|
+
recorded_at: Sun, 18 Jun 2023 05:14:41 GMT
|
136
|
+
recorded_with: VCR 6.1.0
|
@@ -0,0 +1,91 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://rogue-scholar.org/api/posts/5561f8e4-2ff1-4186-a8d5-8dacb3afe414
|
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: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Age:
|
22
|
+
- '0'
|
23
|
+
Cache-Control:
|
24
|
+
- public, max-age=0, must-revalidate
|
25
|
+
Content-Length:
|
26
|
+
- '4357'
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Date:
|
30
|
+
- Sat, 17 Jun 2023 20:47:27 GMT
|
31
|
+
Etag:
|
32
|
+
- '"wi68ur4zhx3d1"'
|
33
|
+
Server:
|
34
|
+
- Vercel
|
35
|
+
Strict-Transport-Security:
|
36
|
+
- max-age=63072000
|
37
|
+
X-Matched-Path:
|
38
|
+
- "/api/posts/[slug]"
|
39
|
+
X-Vercel-Cache:
|
40
|
+
- MISS
|
41
|
+
X-Vercel-Id:
|
42
|
+
- fra1::iad1::ws6nv-1687034847031-a547db209d0d
|
43
|
+
Connection:
|
44
|
+
- close
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: '{"id":"https://libscie.org/ku-leuven-supports-researchequals/","uuid":"5561f8e4-2ff1-4186-a8d5-8dacb3afe414","url":"https://libscie.org/ku-leuven-supports-researchequals/","title":"KU
|
48
|
+
Leuven supports ResearchEquals","summary":"KU Leuven is now an inaugural supporting
|
49
|
+
member of ResearchEquals, sustaining and governing the development of modular
|
50
|
+
publishing.As part of their commitment to Open Science, KU Leuven supports
|
51
|
+
sustainable implementations of Open Access and Open Science through the KU
|
52
|
+
Leuven Fund for Fair OA. The fund is usually only","date_published":"2023-05-09T06:43:26Z","date_modified":null,"date_indexed":"1970-01-01T00:00:00+00:00","authors":[{"url":"https://ror.org/0342dzm54","name":"Liberate
|
53
|
+
Science"}],"image":"https://libscie.org/content/images/2023/04/thank-you-1-.jpg","content_html":"<img
|
54
|
+
src=\"https://libscie.org/content/images/2023/04/thank-you-1-.jpg\" alt=\"KU
|
55
|
+
Leuven supports ResearchEquals\"><p>KU Leuven is now an inaugural supporting
|
56
|
+
member of ResearchEquals, sustaining and governing the development of modular
|
57
|
+
publishing.</p><p>As part of their commitment to Open Science, KU Leuven supports
|
58
|
+
sustainable implementations of Open Access and Open Science through the <a
|
59
|
+
href=\"https://www.kuleuven.be/open-science/what-is-open-science/scholarly-publishing-and-open-access/open-access-kuleuven/OS-services?ref=libscie.org\">KU
|
60
|
+
Leuven Fund for Fair OA</a>. The fund is usually only available to non-profits,
|
61
|
+
but ResearchEquals’ governance convinced KU Leuven to support a for-profit
|
62
|
+
initiative.</p><p>“We don’t want to be too rigid in our approach
|
63
|
+
and understand that publishing or other research infrastructures can work
|
64
|
+
according to different sustainability models. What matters to us is that,
|
65
|
+
if profits are made, they are reinvested in the academic community and that
|
66
|
+
researchers remain firmly in control.” Demmy Verbeke said.</p><p>Supporting
|
67
|
+
members help sustain operations and receive additional governance rights for
|
68
|
+
<a href=\"https://researchequals.com/?ref=libscie.org\">ResearchEquals</a>.
|
69
|
+
These rights include the option to participate in quarterly assemblies, strategy
|
70
|
+
and decision making processes, the power to block acquisitions, and to request
|
71
|
+
more information around business operations. As a result, supporting members
|
72
|
+
shape how ResearchEquals evolves. Individuals can become supporting members
|
73
|
+
for 79.99 euro’s per year. Institutions can become supporting members
|
74
|
+
for a yearly contribution of at least 2500 euro’s. </p><p>ResearchEquals
|
75
|
+
is an open source, open access publishing platform for research modules. ResearchEquals
|
76
|
+
realized the first modular publishing platform (launched February 1st, 2022),
|
77
|
+
which revolves around sharing the research process, step by step, instead
|
78
|
+
of only the final report.</p><p>“It is great to see KU Leuven support
|
79
|
+
generative projects, regardless of whether they are for-profit or not”
|
80
|
+
Chris Hartgerink said.</p><p>KU Leuven is one of the first institutional supporting
|
81
|
+
members of ResearchEquals.</p><hr><p>KU Leuven is one of the largest universities
|
82
|
+
in Belgium, with a strong commitment to open access and open science. Demmy
|
83
|
+
Verbeke and Laura Mesotten manage the Fund for Fair OA of KU Leuven Libraries.</p><p>Liberate
|
84
|
+
Science GmbH (est. 2019) cultivates alternative publishing formats that work
|
85
|
+
for researchers everywhere. ResearchEquals is a Liberate Science GmbH project.
|
86
|
+
For more information view the <a href=\"https://www.researchequals.com/supporting-member?ref=libscie.org\">supporting
|
87
|
+
member page</a> or contact CEO Chris Hartgerink (<a href=\"mailto:ceo@libscie.org\">ceo@libscie.org</a>).</p>","tags":["ResearchEquals"],"language":"en","references":null,"blog_id":"h49ct36","blog":{"id":"h49ct36","title":"Liberate
|
88
|
+
Science","description":"Research as a commons","language":"en","favicon":"https://libscie.org/favicon.png","feed_url":"https://libscie.org/rss/","home_page_url":"https://libscie.org/","user_id":"8498eaf6-8c58-4b58-bc15-27eda292b1aa","created_at":"2023-05-31T14:08:03+00:00","indexed_at":"2023-01-04","feed_format":"application/rss+xml","license":"https://creativecommons.org/licenses/by/4.0/legalcode","generator":"Ghost
|
89
|
+
5.49","category":"Social Sciences","prefix":null,"modified_at":"2023-06-13T06:48:37+00:00","version":"https://jsonfeed.org/version/1.1","backlog":true,"authors":null}}'
|
90
|
+
recorded_at: Sat, 17 Jun 2023 20:47:27 GMT
|
91
|
+
recorded_with: VCR 6.1.0
|
@@ -0,0 +1,91 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://rogue-scholar.org/api/posts/5561f8e4-2ff1-4186-a8d5-8dacb3afe414
|
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: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Age:
|
22
|
+
- '0'
|
23
|
+
Cache-Control:
|
24
|
+
- public, max-age=0, must-revalidate
|
25
|
+
Content-Length:
|
26
|
+
- '4357'
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Date:
|
30
|
+
- Sat, 17 Jun 2023 21:53:20 GMT
|
31
|
+
Etag:
|
32
|
+
- '"wi68ur4zhx3d1"'
|
33
|
+
Server:
|
34
|
+
- Vercel
|
35
|
+
Strict-Transport-Security:
|
36
|
+
- max-age=63072000
|
37
|
+
X-Matched-Path:
|
38
|
+
- "/api/posts/[slug]"
|
39
|
+
X-Vercel-Cache:
|
40
|
+
- MISS
|
41
|
+
X-Vercel-Id:
|
42
|
+
- fra1::iad1::m9bzn-1687038797323-61355f142315
|
43
|
+
Connection:
|
44
|
+
- close
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: '{"id":"https://libscie.org/ku-leuven-supports-researchequals/","uuid":"5561f8e4-2ff1-4186-a8d5-8dacb3afe414","url":"https://libscie.org/ku-leuven-supports-researchequals/","title":"KU
|
48
|
+
Leuven supports ResearchEquals","summary":"KU Leuven is now an inaugural supporting
|
49
|
+
member of ResearchEquals, sustaining and governing the development of modular
|
50
|
+
publishing.As part of their commitment to Open Science, KU Leuven supports
|
51
|
+
sustainable implementations of Open Access and Open Science through the KU
|
52
|
+
Leuven Fund for Fair OA. The fund is usually only","date_published":"2023-05-09T06:43:26Z","date_modified":null,"date_indexed":"1970-01-01T00:00:00+00:00","authors":[{"url":"https://ror.org/0342dzm54","name":"Liberate
|
53
|
+
Science"}],"image":"https://libscie.org/content/images/2023/04/thank-you-1-.jpg","content_html":"<img
|
54
|
+
src=\"https://libscie.org/content/images/2023/04/thank-you-1-.jpg\" alt=\"KU
|
55
|
+
Leuven supports ResearchEquals\"><p>KU Leuven is now an inaugural supporting
|
56
|
+
member of ResearchEquals, sustaining and governing the development of modular
|
57
|
+
publishing.</p><p>As part of their commitment to Open Science, KU Leuven supports
|
58
|
+
sustainable implementations of Open Access and Open Science through the <a
|
59
|
+
href=\"https://www.kuleuven.be/open-science/what-is-open-science/scholarly-publishing-and-open-access/open-access-kuleuven/OS-services?ref=libscie.org\">KU
|
60
|
+
Leuven Fund for Fair OA</a>. The fund is usually only available to non-profits,
|
61
|
+
but ResearchEquals’ governance convinced KU Leuven to support a for-profit
|
62
|
+
initiative.</p><p>“We don’t want to be too rigid in our approach
|
63
|
+
and understand that publishing or other research infrastructures can work
|
64
|
+
according to different sustainability models. What matters to us is that,
|
65
|
+
if profits are made, they are reinvested in the academic community and that
|
66
|
+
researchers remain firmly in control.” Demmy Verbeke said.</p><p>Supporting
|
67
|
+
members help sustain operations and receive additional governance rights for
|
68
|
+
<a href=\"https://researchequals.com/?ref=libscie.org\">ResearchEquals</a>.
|
69
|
+
These rights include the option to participate in quarterly assemblies, strategy
|
70
|
+
and decision making processes, the power to block acquisitions, and to request
|
71
|
+
more information around business operations. As a result, supporting members
|
72
|
+
shape how ResearchEquals evolves. Individuals can become supporting members
|
73
|
+
for 79.99 euro’s per year. Institutions can become supporting members
|
74
|
+
for a yearly contribution of at least 2500 euro’s. </p><p>ResearchEquals
|
75
|
+
is an open source, open access publishing platform for research modules. ResearchEquals
|
76
|
+
realized the first modular publishing platform (launched February 1st, 2022),
|
77
|
+
which revolves around sharing the research process, step by step, instead
|
78
|
+
of only the final report.</p><p>“It is great to see KU Leuven support
|
79
|
+
generative projects, regardless of whether they are for-profit or not”
|
80
|
+
Chris Hartgerink said.</p><p>KU Leuven is one of the first institutional supporting
|
81
|
+
members of ResearchEquals.</p><hr><p>KU Leuven is one of the largest universities
|
82
|
+
in Belgium, with a strong commitment to open access and open science. Demmy
|
83
|
+
Verbeke and Laura Mesotten manage the Fund for Fair OA of KU Leuven Libraries.</p><p>Liberate
|
84
|
+
Science GmbH (est. 2019) cultivates alternative publishing formats that work
|
85
|
+
for researchers everywhere. ResearchEquals is a Liberate Science GmbH project.
|
86
|
+
For more information view the <a href=\"https://www.researchequals.com/supporting-member?ref=libscie.org\">supporting
|
87
|
+
member page</a> or contact CEO Chris Hartgerink (<a href=\"mailto:ceo@libscie.org\">ceo@libscie.org</a>).</p>","tags":["ResearchEquals"],"language":"en","references":null,"blog_id":"h49ct36","blog":{"id":"h49ct36","title":"Liberate
|
88
|
+
Science","description":"Research as a commons","language":"en","favicon":"https://libscie.org/favicon.png","feed_url":"https://libscie.org/rss/","home_page_url":"https://libscie.org/","user_id":"8498eaf6-8c58-4b58-bc15-27eda292b1aa","created_at":"2023-05-31T14:08:03+00:00","indexed_at":"2023-01-04","feed_format":"application/rss+xml","license":"https://creativecommons.org/licenses/by/4.0/legalcode","generator":"Ghost
|
89
|
+
5.49","category":"Social Sciences","prefix":null,"modified_at":"2023-06-13T06:48:37+00:00","version":"https://jsonfeed.org/version/1.1","backlog":true,"authors":null}}'
|
90
|
+
recorded_at: Sat, 17 Jun 2023 21:53:21 GMT
|
91
|
+
recorded_with: VCR 6.1.0
|
@@ -225,6 +225,57 @@ describe Commonmeta::Metadata, vcr: true do
|
|
225
225
|
expect(subject.container).to eq("identifier" => "https://citationstyles.org/", "identifierType" => "URL", "title" => "Citation Style Language", "type" => "Periodical")
|
226
226
|
end
|
227
227
|
|
228
|
+
it "ghost post with organizational author" do
|
229
|
+
input = "https://rogue-scholar.org/api/posts/5561f8e4-2ff1-4186-a8d5-8dacb3afe414"
|
230
|
+
subject = described_class.new(input: input)
|
231
|
+
puts subject.errors
|
232
|
+
# expect(subject.valid?).to be true
|
233
|
+
expect(subject.id).to eq("https://libscie.org/ku-leuven-supports-researchequals")
|
234
|
+
expect(subject.url).to eq("https://libscie.org/ku-leuven-supports-researchequals")
|
235
|
+
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "5561f8e4-2ff1-4186-a8d5-8dacb3afe414", "alternateIdentifierType" => "UUID" }])
|
236
|
+
expect(subject.type).to eq("Article")
|
237
|
+
expect(subject.creators.length).to eq(1)
|
238
|
+
expect(subject.creators.first).to eq("id"=>"https://ror.org/0342dzm54", "name"=>"Liberate Science", "type"=>"Organization")
|
239
|
+
expect(subject.titles).to eq([{ "title" => "KU Leuven supports ResearchEquals" }])
|
240
|
+
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
241
|
+
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
242
|
+
expect(subject.date).to eq("published" => "2023-05-09")
|
243
|
+
expect(subject.descriptions.first["description"]).to start_with("KU Leuven is now an inaugural supporting member of ResearchEquals")
|
244
|
+
expect(subject.publisher).to eq("name" => "Liberate Science")
|
245
|
+
expect(subject.subjects).to eq([{ "subject" => "Social sciences" },
|
246
|
+
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
247
|
+
"subject" => "FOS: Social sciences",
|
248
|
+
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
249
|
+
expect(subject.language).to eq("en")
|
250
|
+
expect(subject.container).to eq("identifier" => "https://libscie.org/", "identifierType" => "URL", "title" => "Liberate Science", "type" => "Periodical")
|
251
|
+
expect(subject.references).to be_nil
|
252
|
+
end
|
253
|
+
|
254
|
+
it "blog post with non-url id" do
|
255
|
+
input = "https://rogue-scholar.org/api/posts/1898d2d7-4d87-4487-96c4-3073cf99e9a5"
|
256
|
+
subject = described_class.new(input: input)
|
257
|
+
expect(subject.valid?).to be true
|
258
|
+
expect(subject.id).to eq("http://sfmatheson.blogspot.com/2023/01/quintessence-of-dust-2023-restart-why.html")
|
259
|
+
expect(subject.url).to eq("http://sfmatheson.blogspot.com/2023/01/quintessence-of-dust-2023-restart-why.html")
|
260
|
+
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "1898d2d7-4d87-4487-96c4-3073cf99e9a5", "alternateIdentifierType" => "UUID" }])
|
261
|
+
expect(subject.type).to eq("Article")
|
262
|
+
expect(subject.creators.length).to eq(1)
|
263
|
+
expect(subject.creators.first).to eq("familyName"=>"Matheson", "givenName"=>"Stephen", "type"=>"Person")
|
264
|
+
expect(subject.titles).to eq([{ "title" => "Quintessence of Dust 2023 restart: the why" }])
|
265
|
+
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
266
|
+
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
267
|
+
expect(subject.date).to eq("published"=>"2023-01-09", "updated"=>"2023-04-02")
|
268
|
+
expect(subject.descriptions.first["description"]).to start_with("It's early January 2023, a little before sunset in Tucson.")
|
269
|
+
expect(subject.publisher).to eq("name" => "Quintessence of Dust")
|
270
|
+
expect(subject.subjects).to eq([{ "subject" => "Social sciences" },
|
271
|
+
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
272
|
+
"subject" => "FOS: Social sciences",
|
273
|
+
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
274
|
+
expect(subject.language).to eq("en")
|
275
|
+
expect(subject.container).to eq("identifier" => "http://sfmatheson.blogspot.com/", "identifierType" => "URL", "title" => "Quintessence of Dust", "type" => "Periodical")
|
276
|
+
expect(subject.references).to be_nil
|
277
|
+
end
|
278
|
+
|
228
279
|
it "substack post with broken reference" do
|
229
280
|
input = "https://rogue-scholar.org/api/posts/2b105b29-acbc-4eae-9ff1-368803f36a4d"
|
230
281
|
subject = described_class.new(input: input)
|
@@ -268,4 +319,21 @@ describe Commonmeta::Metadata, vcr: true do
|
|
268
319
|
expect(response).to eq("3e1278f6-e7c0-43e1-bb54-6829e1344c0d")
|
269
320
|
end
|
270
321
|
end
|
322
|
+
|
323
|
+
context "get doi_prefix for blog" do
|
324
|
+
it "by blog_id" do
|
325
|
+
response = subject.get_doi_prefix_by_blog_id("tyfqw20")
|
326
|
+
expect(response).to eq("10.59350")
|
327
|
+
end
|
328
|
+
|
329
|
+
it "by blog post uuid" do
|
330
|
+
response = subject.get_doi_prefix_by_json_feed_item_uuid("1898d2d7-4d87-4487-96c4-3073cf99e9a5")
|
331
|
+
expect(response).to eq("10.59350")
|
332
|
+
end
|
333
|
+
|
334
|
+
it "by blog post uuid specific prefix" do
|
335
|
+
response = subject.get_doi_prefix_by_json_feed_item_uuid("2b22bbba-bcba-4072-94cc-3f88442fff88")
|
336
|
+
expect(response).to eq("10.54900")
|
337
|
+
end
|
338
|
+
end
|
271
339
|
end
|
data/spec/utils_spec.rb
CHANGED
@@ -101,6 +101,14 @@ describe Commonmeta::Metadata, vcr: true do
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
+
context "validate_ror" do
|
105
|
+
it "validate_ror" do
|
106
|
+
ror = "https://ror.org/0342dzm54"
|
107
|
+
response = subject.validate_ror(ror)
|
108
|
+
expect(response).to eq("0342dzm54")
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
104
112
|
context "validate_orcid_scheme" do
|
105
113
|
it "validate_orcid_scheme" do
|
106
114
|
orcid = "http://orcid.org"
|
@@ -257,5 +257,33 @@ describe Commonmeta::Metadata, vcr: true do
|
|
257
257
|
expect(crossref_xml.dig('item_number')).to eq("__content__"=>"1c57855813244493b8af84c49eabc52f", "item_number_type"=>"uuid")
|
258
258
|
expect(crossref_xml.dig('group_title')).to eq('Engineering and technology')
|
259
259
|
end
|
260
|
+
|
261
|
+
it "json_feed_item from rogue scholar with organizational author" do
|
262
|
+
input = "https://rogue-scholar.org/api/posts/5561f8e4-2ff1-4186-a8d5-8dacb3afe414"
|
263
|
+
subject = described_class.new(input: input, doi: "10.59350/9ry27-7cz42")
|
264
|
+
|
265
|
+
expect(subject.valid?).to be true
|
266
|
+
expect(subject.id).to eq("https://doi.org/10.59350/9ry27-7cz42")
|
267
|
+
expect(subject.url).to eq("https://libscie.org/ku-leuven-supports-researchequals")
|
268
|
+
expect(subject.type).to eq("Article")
|
269
|
+
expect(subject.titles).to eq([{ "title" => "KU Leuven supports ResearchEquals" }])
|
270
|
+
expect(subject.creators.length).to eq(1)
|
271
|
+
expect(subject.creators.first).to eq("id"=>"https://ror.org/0342dzm54", "name"=>"Liberate Science", "type"=>"Organization")
|
272
|
+
expect(subject.subjects).to eq([{"subject"=>"Social sciences"},
|
273
|
+
{"schemeUri"=>"http://www.oecd.org/science/inno/38235147.pdf",
|
274
|
+
"subject"=>"FOS: Social sciences",
|
275
|
+
"subjectScheme"=>"Fields of Science and Technology (FOS)"}])
|
276
|
+
expect(subject.language).to eq("en")
|
277
|
+
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
278
|
+
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
279
|
+
crossref_xml = Hash.from_xml(subject.crossref_xml).dig("doi_batch", "body", "posted_content")
|
280
|
+
expect(Array.wrap(crossref_xml.dig("contributors", "organization")).length).to eq(1)
|
281
|
+
expect(Array.wrap(crossref_xml.dig("contributors",
|
282
|
+
"organization")).first).to eq("contributor_role"=>"author", "name"=>"Liberate Science", "sequence"=>"first")
|
283
|
+
expect(crossref_xml.dig("titles",
|
284
|
+
"title")).to eq("KU Leuven supports ResearchEquals")
|
285
|
+
expect(crossref_xml.dig('item_number')).to eq("__content__"=>"5561f8e42ff14186a8d58dacb3afe414", "item_number_type"=>"uuid")
|
286
|
+
expect(crossref_xml.dig('group_title')).to eq('Social sciences')
|
287
|
+
end
|
260
288
|
end
|
261
289
|
end
|
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.
|
4
|
+
version: 3.3.1
|
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-
|
11
|
+
date: 2023-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -1071,6 +1071,12 @@ files:
|
|
1071
1071
|
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/convert_from_id/schema_org/to_crossref_xml.yml
|
1072
1072
|
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/convert_from_id/schema_org/to_datacite.yml
|
1073
1073
|
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/convert_from_id/schema_org/to_schema_org.yml
|
1074
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/doi_prefix/doi_prefix_by_blog.yml
|
1075
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/doi_prefix/doi_prefix_by_uuid.yml
|
1076
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_blog.yml
|
1077
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_blog_unknown_blog_id.yml
|
1078
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_uuid.yml
|
1079
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/encode/by_uuid_unknown_uuid.yml
|
1074
1080
|
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/find_from_format_by_id/crossref.yml
|
1075
1081
|
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/find_from_format_by_id/datacite.yml
|
1076
1082
|
- spec/fixtures/vcr_cassettes/Commonmeta_CLI/find_from_format_by_id/jalc.yml
|
@@ -1170,6 +1176,9 @@ files:
|
|
1170
1176
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_datetime_from_time/nil.yml
|
1171
1177
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_datetime_from_time/past.yml
|
1172
1178
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_datetime_from_time/present.yml
|
1179
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_id.yml
|
1180
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_post_uuid.yml
|
1181
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_doi_prefix_for_blog/by_blog_post_uuid_specific_prefix.yml
|
1173
1182
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/all_posts.yml
|
1174
1183
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/behind_the_science.yml
|
1175
1184
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/by_blog_id.yml
|
@@ -1180,9 +1189,12 @@ files:
|
|
1180
1189
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/unregistered_posts.yml
|
1181
1190
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/upstream.yml
|
1182
1191
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/upstream_blog.yml
|
1192
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item/by_uuid.yml
|
1193
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/blog_post_with_non-url_id.yml
|
1183
1194
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/blogger_post.yml
|
1184
1195
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_with_author_name_suffix.yml
|
1185
1196
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_with_doi.yml
|
1197
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_with_organizational_author.yml
|
1186
1198
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_without_doi.yml
|
1187
1199
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/jekyll_post.yml
|
1188
1200
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/substack_post_with_broken_reference.yml
|
@@ -1301,6 +1313,7 @@ files:
|
|
1301
1313
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/journal_article.yml
|
1302
1314
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/journal_article_from_datacite.yml
|
1303
1315
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_rogue_scholar_with_doi.yml
|
1316
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_rogue_scholar_with_organizational_author.yml
|
1304
1317
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_upstream_blog.yml
|
1305
1318
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_with_references.yml
|
1306
1319
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/posted_content.yml
|