commonmeta-ruby 3.3.6 → 3.3.8
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/lib/commonmeta/author_utils.rb +7 -5
- data/lib/commonmeta/cli.rb +1 -1
- data/lib/commonmeta/crossref_utils.rb +14 -31
- data/lib/commonmeta/schema_utils.rb +1 -1
- data/lib/commonmeta/utils.rb +2 -2
- data/lib/commonmeta/version.rb +1 -1
- data/resources/{commonmeta_v0.9.1.json → commonmeta_v0.9.2.json} +19 -5
- data/spec/author_utils_spec.rb +145 -104
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/jekyll_post_with_anonymous_author.yml +62 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_one_author/affiliation_is_space.yml +303 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_rogue_scholar_with_anonymous_author.yml +62 -0
- data/spec/readers/json_feed_reader_spec.rb +26 -2
- data/spec/writers/crossref_xml_writer_spec.rb +34 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e717e42ba9e8264cfc3ebb4bcb774c58b7f003afad4ffea7da385cd66e84eb27
|
4
|
+
data.tar.gz: bee1fe28c91acb00e3b5afae8b4305d6036dd4924f554b44d49145ac388fcf69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1cc77541969f79992f5e8b6f0677939e64397ffbedfbb75c40d2d534c2a64ad2f8a29b86df1570d76cdd0245f2f80a01e422052c065ca5e45085b85fb9dda7ec
|
7
|
+
data.tar.gz: 1389f97cf9c919eda5a384a247b7cddb142b0bfb50ce4c7bb77d83f8c1da6812a20c3277a1a0860d42b4952c63c8862d29c6061e0c11cf2a1436ea0424cd3fc9
|
data/Gemfile.lock
CHANGED
@@ -49,7 +49,11 @@ module Commonmeta
|
|
49
49
|
# DataCite metadata
|
50
50
|
type = type[0..-3] if type.is_a?(String) && type.end_with?('al')
|
51
51
|
|
52
|
-
if type.blank? && id.is_a?(String) && URI.parse(id).host == 'ror.org'
|
52
|
+
if type.blank? && name.blank? && id.is_a?(String) && URI.parse(id).host == 'ror.org'
|
53
|
+
type = 'Person'
|
54
|
+
author['affiliation'] = { 'affiliationIdentifier' => id }
|
55
|
+
id = nil
|
56
|
+
elsif type.blank? && id.is_a?(String) && URI.parse(id).host == 'ror.org'
|
53
57
|
type = 'Organization'
|
54
58
|
elsif type.blank? && author['type'] == 'Organization'
|
55
59
|
type = 'Organization'
|
@@ -65,7 +69,7 @@ module Commonmeta
|
|
65
69
|
contributor_type = parse_attributes(author.fetch('contributorType', nil))
|
66
70
|
|
67
71
|
# split name for type Person into given/family name if not already provided
|
68
|
-
if type == 'Person' && given_name.blank? && family_name.blank?
|
72
|
+
if type == 'Person' && name.present? && given_name.blank? && family_name.blank?
|
69
73
|
Namae.options[:include_particle_in_family] = true
|
70
74
|
names = Namae.parse(name)
|
71
75
|
parsed_name = names.first
|
@@ -181,9 +185,7 @@ module Commonmeta
|
|
181
185
|
name = (a['name'] || a['__content__']).to_s.squish.presence
|
182
186
|
end
|
183
187
|
|
184
|
-
|
185
|
-
|
186
|
-
{ 'id' => affiliation_identifier, 'name' => name }.compact
|
188
|
+
{ 'id' => affiliation_identifier, 'name' => name }.compact.presence
|
187
189
|
end.compact.presence
|
188
190
|
end
|
189
191
|
|
data/lib/commonmeta/cli.rb
CHANGED
@@ -95,21 +95,22 @@ module Commonmeta
|
|
95
95
|
def insert_crossref_creators(xml)
|
96
96
|
xml.contributors do
|
97
97
|
Array.wrap(creators).each_with_index do |creator, index|
|
98
|
-
if creator["type"] == "Organization"
|
99
|
-
xml.organization("contributor_role" => "author",
|
100
|
-
"sequence" => index.zero? ? "first" : "additional")
|
101
|
-
insert_crossref_organization(xml, creator)
|
102
|
-
end
|
98
|
+
if creator["type"] == "Organization" && creator["name"].present?
|
99
|
+
xml.organization(creator["name"], "contributor_role" => "author",
|
100
|
+
"sequence" => index.zero? ? "first" : "additional")
|
103
101
|
elsif creator["givenName"].present? || creator["familyName"].present?
|
104
102
|
xml.person_name("contributor_role" => "author",
|
105
103
|
"sequence" => index.zero? ? "first" : "additional") do
|
106
104
|
insert_crossref_person(xml, creator)
|
107
105
|
end
|
108
|
-
|
109
|
-
xml.
|
110
|
-
|
106
|
+
elsif creator["affiliation"].present?
|
107
|
+
xml.anonymous("contributor_role" => "author",
|
108
|
+
"sequence" => index.zero? ? "first" : "additional") do
|
111
109
|
insert_crossref_anonymous(xml, creator)
|
112
110
|
end
|
111
|
+
else
|
112
|
+
xml.anonymous("contributor_role" => "author",
|
113
|
+
"sequence" => index.zero? ? "first" : "additional")
|
113
114
|
end
|
114
115
|
end
|
115
116
|
end
|
@@ -125,36 +126,18 @@ module Commonmeta
|
|
125
126
|
xml.affiliations do
|
126
127
|
xml.institution do
|
127
128
|
xml.institution_name(creator.dig("affiliation", 0, "name")) if creator.dig("affiliation", 0, "name").present?
|
128
|
-
xml.institution_id(creator.dig("affiliation", 0, "
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
def insert_crossref_organization(xml, creator)
|
135
|
-
xml.name(creator["name"]) if creator["name"].present?
|
136
|
-
if creator["affiliation"].present?
|
137
|
-
xml.affiliations do
|
138
|
-
xml.institution do
|
139
|
-
xml.institution_name(creator.dig("affiliation", 0, "name")) if creator.dig("affiliation", 0, "name").present?
|
140
|
-
xml.institution_id(creator.dig("affiliation", 0, "affiliationIdentifier"), "type" => creator.dig("affiliation", 0, "affiliationIdentifierScheme")) if creator.dig("affiliation", 0, "affiliationIdentifier").present?
|
129
|
+
xml.institution_id(creator.dig("affiliation", 0, "id"), 'type' => "ror") if creator.dig("affiliation", 0, "id").present?
|
141
130
|
end
|
142
131
|
end
|
143
132
|
end
|
144
133
|
end
|
145
134
|
|
146
135
|
def insert_crossref_anonymous(xml, creator)
|
147
|
-
|
148
|
-
xml.
|
149
|
-
xml.
|
150
|
-
|
151
|
-
xml.institution_name(creator.dig("affiliation", 0, "name")) if creator.dig("affiliation", 0, "name").present?
|
152
|
-
xml.institution_id(creator.dig("affiliation", 0, "affiliationIdentifier"), "type" => creator.dig("affiliation", 0, "affiliationIdentifierScheme")) if creator.dig("affiliation", 0, "affiliationIdentifier").present?
|
153
|
-
end
|
154
|
-
end
|
136
|
+
xml.affiliations do
|
137
|
+
xml.institution do
|
138
|
+
xml.institution_name(creator.dig("affiliation", 0, "name")) if creator.dig("affiliation", 0, "name").present?
|
139
|
+
xml.institution_id(creator.dig("affiliation", 0, "id"), 'type' => "ror") if creator.dig("affiliation", 0, "id").present?
|
155
140
|
end
|
156
|
-
else
|
157
|
-
xml.anonymous
|
158
141
|
end
|
159
142
|
end
|
160
143
|
|
@@ -5,7 +5,7 @@ require "pathname"
|
|
5
5
|
|
6
6
|
module Commonmeta
|
7
7
|
module SchemaUtils
|
8
|
-
COMMONMETA = File.read(File.expand_path("../../resources/commonmeta_v0.9.
|
8
|
+
COMMONMETA = File.read(File.expand_path("../../resources/commonmeta_v0.9.2.json",
|
9
9
|
__dir__))
|
10
10
|
|
11
11
|
def json_schema_errors
|
data/lib/commonmeta/utils.rb
CHANGED
@@ -1473,7 +1473,7 @@ module Commonmeta
|
|
1473
1473
|
JWT.encode payload, [secret].pack("H*"), "HS256", header
|
1474
1474
|
end
|
1475
1475
|
|
1476
|
-
def
|
1476
|
+
def update_ghost_post_via_api(uuid)
|
1477
1477
|
api_key = ENV["API_KEY"]
|
1478
1478
|
api_url = ENV["API_URL"]
|
1479
1479
|
|
@@ -1491,7 +1491,7 @@ module Commonmeta
|
|
1491
1491
|
url = post.to_h.dig("url")
|
1492
1492
|
doi = validate_doi(post.to_h.dig("id"))
|
1493
1493
|
doi = doi_as_url(doi)
|
1494
|
-
|
1494
|
+
|
1495
1495
|
return nil unless url.present? && doi.present?
|
1496
1496
|
|
1497
1497
|
# get id and updated_at from ghost api
|
data/lib/commonmeta/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
3
|
-
"$id": "https://commonmeta.org/commonmeta_v0.9.
|
4
|
-
"title": "Commonmeta v0.9.
|
3
|
+
"$id": "https://commonmeta.org/commonmeta_v0.9.2.json",
|
4
|
+
"title": "Commonmeta v0.9.2",
|
5
5
|
"description": "JSON representation of the Commonmeta schema.",
|
6
6
|
"additionalProperties": false,
|
7
7
|
"definitions": {
|
@@ -13,7 +13,14 @@
|
|
13
13
|
"id": { "type": "string", "format": "uri" },
|
14
14
|
"name": { "type": "string" }
|
15
15
|
},
|
16
|
-
"
|
16
|
+
"anyOf": [
|
17
|
+
{
|
18
|
+
"required": ["id"]
|
19
|
+
},
|
20
|
+
{
|
21
|
+
"required": ["name"]
|
22
|
+
}
|
23
|
+
]
|
17
24
|
},
|
18
25
|
"uniqueItems": true
|
19
26
|
},
|
@@ -78,7 +85,7 @@
|
|
78
85
|
"description": "The additional type of the resource.",
|
79
86
|
"type": "string"
|
80
87
|
},
|
81
|
-
|
88
|
+
|
82
89
|
"url": {
|
83
90
|
"description": "The URL of the resource.",
|
84
91
|
"type": "string",
|
@@ -168,7 +175,14 @@
|
|
168
175
|
"type": {
|
169
176
|
"description": "The type of the container.",
|
170
177
|
"type": "string",
|
171
|
-
"enum": [
|
178
|
+
"enum": [
|
179
|
+
"Book",
|
180
|
+
"BookSeries",
|
181
|
+
"Journal",
|
182
|
+
"Periodical",
|
183
|
+
"ProceedingsSeries",
|
184
|
+
"Series"
|
185
|
+
]
|
172
186
|
},
|
173
187
|
"title": {
|
174
188
|
"description": "The title of the container.",
|
data/spec/author_utils_spec.rb
CHANGED
@@ -1,181 +1,222 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "spec_helper"
|
4
4
|
|
5
5
|
describe Commonmeta::Metadata, vcr: true do
|
6
6
|
let(:subject) do
|
7
7
|
described_class.new
|
8
8
|
end
|
9
9
|
|
10
|
-
context
|
11
|
-
it
|
12
|
-
author = {
|
13
|
-
expect(subject.is_personal_name?(name: author[
|
10
|
+
context "is_personal_name?" do
|
11
|
+
it "has id" do
|
12
|
+
author = { "id" => "http://orcid.org/0000-0003-1419-2405", "givenName" => "Martin", "familyName" => "Fenner", "name" => "Martin Fenner" }
|
13
|
+
expect(subject.is_personal_name?(name: author["name"])).to be true
|
14
14
|
end
|
15
15
|
|
16
|
-
it
|
17
|
-
author = {
|
18
|
-
|
19
|
-
expect(subject.is_personal_name?(name: author[
|
16
|
+
it "has orcid id" do
|
17
|
+
author = { "creatorName" => "Fenner, Martin", "givenName" => "Martin", "familyName" => "Fenner",
|
18
|
+
"nameIdentifier" => { "schemeURI" => "http://orcid.org/", "nameIdentifierScheme" => "ORCID", "__content__" => "0000-0003-1419-2405" } }
|
19
|
+
expect(subject.is_personal_name?(name: author["creatorName"])).to be true
|
20
20
|
end
|
21
21
|
|
22
|
-
it
|
23
|
-
author = {
|
24
|
-
expect(subject.is_personal_name?(name: author[
|
22
|
+
it "has family name" do
|
23
|
+
author = { "givenName" => "Martin", "familyName" => "Fenner", "name" => "Martin Fenner" }
|
24
|
+
expect(subject.is_personal_name?(name: author["name"])).to be true
|
25
25
|
end
|
26
26
|
|
27
|
-
it
|
28
|
-
author = {
|
29
|
-
expect(subject.is_personal_name?(name: author[
|
27
|
+
it "has comma" do
|
28
|
+
author = { "name" => "Fenner, Martin" }
|
29
|
+
expect(subject.is_personal_name?(name: author["name"])).to be true
|
30
30
|
end
|
31
31
|
|
32
|
-
it
|
33
|
-
author = {
|
34
|
-
expect(subject.is_personal_name?(name: author[
|
32
|
+
it "has known given name" do
|
33
|
+
author = { "name" => "Martin Fenner" }
|
34
|
+
expect(subject.is_personal_name?(name: author["name"])).to be true
|
35
35
|
end
|
36
36
|
|
37
|
-
it
|
38
|
-
author = {
|
39
|
-
expect(subject.is_personal_name?(name: author[
|
37
|
+
it "has unknown given name" do
|
38
|
+
author = { "name" => "Rintze Zelle" }
|
39
|
+
expect(subject.is_personal_name?(name: author["name"])).to be true
|
40
40
|
end
|
41
41
|
|
42
|
-
it
|
43
|
-
author = {
|
44
|
-
expect(subject.is_personal_name?(name: author[
|
42
|
+
it "has middle initial" do
|
43
|
+
author = { "name" => "Martin H. Fenner" }
|
44
|
+
expect(subject.is_personal_name?(name: author["name"])).to be true
|
45
45
|
end
|
46
46
|
|
47
|
-
it
|
48
|
-
author = {
|
49
|
-
expect(subject.is_personal_name?(name: author[
|
47
|
+
it "has unknown given name and middle initial" do
|
48
|
+
author = { "name" => "Tejas S. Sathe" }
|
49
|
+
expect(subject.is_personal_name?(name: author["name"])).to be true
|
50
50
|
end
|
51
51
|
|
52
|
-
it
|
53
|
-
author = {
|
54
|
-
expect(subject.is_personal_name?(name: author[
|
52
|
+
it "has no info" do
|
53
|
+
author = { "name" => "M Fenner" }
|
54
|
+
expect(subject.is_personal_name?(name: author["name"])).to be true
|
55
55
|
end
|
56
56
|
|
57
|
-
it
|
58
|
-
author = {
|
59
|
-
expect(subject.is_personal_name?(name: author[
|
57
|
+
it "name with title" do
|
58
|
+
author = { "name" => "Tejas S. Sathe, MD" }
|
59
|
+
expect(subject.is_personal_name?(name: author["name"])).to be true
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
context
|
64
|
-
it
|
65
|
-
author =
|
66
|
-
expect(subject.cleanup_author(author)).to eq(
|
63
|
+
context "cleanup_author" do
|
64
|
+
it "Smith J." do
|
65
|
+
author = "Smith J."
|
66
|
+
expect(subject.cleanup_author(author)).to eq("Smith, J.")
|
67
67
|
end
|
68
68
|
|
69
|
-
it
|
70
|
-
author =
|
71
|
-
expect(subject.cleanup_author(author)).to eq(
|
69
|
+
it "Smith, John" do
|
70
|
+
author = "Smith, John"
|
71
|
+
expect(subject.cleanup_author(author)).to eq("Smith, John")
|
72
72
|
end
|
73
73
|
|
74
|
-
it
|
75
|
-
author =
|
76
|
-
expect(subject.cleanup_author(author)).to eq(
|
74
|
+
it "John Smith" do
|
75
|
+
author = "John Smith"
|
76
|
+
expect(subject.cleanup_author(author)).to eq("John Smith")
|
77
77
|
end
|
78
78
|
|
79
|
-
it
|
80
|
-
author =
|
81
|
-
expect(subject.cleanup_author(author)).to eq(
|
79
|
+
it "with email" do
|
80
|
+
author = "noreply@blogger.com (Roderic Page)"
|
81
|
+
expect(subject.cleanup_author(author)).to eq("Roderic Page")
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
-
context
|
86
|
-
it
|
87
|
-
author = {
|
88
|
-
|
85
|
+
context "get_one_author" do
|
86
|
+
it "has type organization" do
|
87
|
+
author = { "email" => "info@ucop.edu", "name" => "University of California, Santa Barbara",
|
88
|
+
"role" => { "namespace" => "http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode", "roleCode" => "copyrightHolder" }, "type" => "Organization" }
|
89
89
|
response = subject.get_one_author(author)
|
90
|
-
expect(response).to eq(
|
90
|
+
expect(response).to eq("name" => "University of California, Santa Barbara", "type" => "Organization")
|
91
91
|
end
|
92
92
|
|
93
|
-
it
|
94
|
-
input =
|
93
|
+
it "has familyName" do
|
94
|
+
input = "https://doi.org/10.5438/4K3M-NYVG"
|
95
95
|
subject = described_class.new(input: input)
|
96
|
-
meta = JSON.parse(subject.raw).dig(
|
97
|
-
response = subject.get_one_author(meta.dig(
|
96
|
+
meta = JSON.parse(subject.raw).dig("data", "attributes")
|
97
|
+
response = subject.get_one_author(meta.dig("creators").first)
|
98
98
|
expect(response).to eq(
|
99
|
-
|
100
|
-
|
99
|
+
"id" => "https://orcid.org/0000-0003-1419-2405",
|
100
|
+
"givenName" => "Martin", "familyName" => "Fenner", "type" => "Person",
|
101
101
|
)
|
102
102
|
end
|
103
103
|
|
104
|
-
it
|
105
|
-
author = {
|
104
|
+
it "has name with title" do
|
105
|
+
author = { "name" => "Tejas S. Sathe, MD" }
|
106
106
|
response = subject.get_one_author(author)
|
107
|
-
expect(response).to eq(
|
107
|
+
expect(response).to eq("givenName" => "Tejas S.", "familyName" => "Sathe", "type" => "Person")
|
108
108
|
end
|
109
109
|
|
110
|
-
it
|
111
|
-
input =
|
110
|
+
it "has name in display-order with ORCID" do
|
111
|
+
input = "https://doi.org/10.6084/M9.FIGSHARE.4700788"
|
112
112
|
subject = described_class.new(input: input)
|
113
|
-
meta = JSON.parse(subject.raw).dig(
|
114
|
-
response = subject.get_one_author(meta.dig(
|
115
|
-
expect(response).to eq(
|
116
|
-
|
117
|
-
|
113
|
+
meta = JSON.parse(subject.raw).dig("data", "attributes")
|
114
|
+
response = subject.get_one_author(meta.dig("creators").first)
|
115
|
+
expect(response).to eq("type" => "Person",
|
116
|
+
"id" => "https://orcid.org/0000-0003-4881-1606",
|
117
|
+
"givenName" => "Andrea", "familyName" => "Bedini")
|
118
118
|
end
|
119
119
|
|
120
|
-
it
|
121
|
-
author = {
|
122
|
-
|
123
|
-
|
120
|
+
it "is organization" do
|
121
|
+
author = { "email" => "info@ucop.edu",
|
122
|
+
"name" => { "__content__" => "University of California, Santa Barbara" },
|
123
|
+
"type" => "Organization", "role" => { "namespace" => "http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode", "roleCode" => "copyrightHolder" } }
|
124
124
|
response = subject.get_one_author(author)
|
125
|
-
expect(response).to eq(
|
126
|
-
|
125
|
+
expect(response).to eq("name" => "University of California, Santa Barbara",
|
126
|
+
"type" => "Organization")
|
127
127
|
end
|
128
128
|
|
129
|
-
it
|
130
|
-
|
131
|
-
|
129
|
+
it "is another organization" do
|
130
|
+
author = { "name" => "University of California, Santa Barbara",
|
131
|
+
"id" => "https://ror.org/02t274463" }
|
132
|
+
response = subject.get_one_author(author)
|
133
|
+
expect(response).to eq("id" => "https://ror.org/02t274463", "name" => "University of California, Santa Barbara", "type" => "Organization")
|
134
|
+
end
|
135
|
+
|
136
|
+
it "is anonymous" do
|
137
|
+
author = { "id" => "https://ror.org/05745n787" }
|
138
|
+
response = subject.get_one_author(author)
|
139
|
+
expect(response).to eq("type" => "Person", "affiliation" => [{"id"=>"https://ror.org/05745n787"}])
|
140
|
+
end
|
141
|
+
|
142
|
+
it "name with affiliation crossref" do
|
143
|
+
input = "10.7554/elife.01567"
|
144
|
+
subject = described_class.new(input: input, from: "crossref")
|
132
145
|
response = subject.get_one_author(subject.creators.first)
|
133
|
-
expect(response).to eq(
|
134
|
-
|
135
|
-
|
146
|
+
expect(response).to eq("affiliation" => [{ "name" => "Department of Plant Molecular Biology, University of Lausanne, Lausanne, Switzerland" }], "familyName" => "Sankar",
|
147
|
+
"givenName" => "Martial",
|
148
|
+
"type" => "Person")
|
136
149
|
end
|
137
150
|
|
138
|
-
it
|
139
|
-
input =
|
140
|
-
subject = described_class.new(input: input, from:
|
151
|
+
it "only familyName and givenName" do
|
152
|
+
input = "https://doi.pangaea.de/10.1594/PANGAEA.836178"
|
153
|
+
subject = described_class.new(input: input, from: "schema_org")
|
141
154
|
response = subject.get_one_author(subject.creators.first)
|
142
|
-
expect(response).to eq(
|
155
|
+
expect(response).to eq("type" => "Person", "givenName" => "Emma", "familyName" => "Johansson")
|
156
|
+
end
|
157
|
+
|
158
|
+
it "affiliation is space" do
|
159
|
+
input = "10.1177/0042098011428175"
|
160
|
+
subject = described_class.new(input: input)
|
161
|
+
response = subject.get_one_author(subject.creators.first)
|
162
|
+
expect(response).to eq("familyName"=>"Petrovici", "givenName"=>"Norbert", "type"=>"Person")
|
143
163
|
end
|
144
164
|
end
|
145
165
|
|
146
|
-
context
|
166
|
+
context "authors_as_string" do
|
147
167
|
let(:authors) do
|
148
|
-
[{
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
{
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
{
|
157
|
-
|
158
|
-
|
159
|
-
end
|
160
|
-
|
161
|
-
it
|
168
|
+
[{ "type" => "Person",
|
169
|
+
"id" => "https://orcid.org/0000-0003-0077-4738",
|
170
|
+
"givenName" => "Matt",
|
171
|
+
"familyName" => "Jones" },
|
172
|
+
{ "type" => "Person",
|
173
|
+
"id" => "https://orcid.org/0000-0002-2192-403X",
|
174
|
+
"givenName" => "Peter",
|
175
|
+
"familyName" => "Slaughter" },
|
176
|
+
{ "type" => "Organization",
|
177
|
+
"id" => "https://ror.org/02t274463",
|
178
|
+
"name" => "University of California, Santa Barbara" }]
|
179
|
+
end
|
180
|
+
|
181
|
+
it "authors" do
|
162
182
|
response = subject.authors_as_string(authors[0..1])
|
163
|
-
expect(response).to eq(
|
183
|
+
expect(response).to eq("Jones, Matt and Slaughter, Peter")
|
164
184
|
end
|
165
185
|
|
166
|
-
it
|
186
|
+
it "single author" do
|
167
187
|
response = subject.authors_as_string(authors.first)
|
168
|
-
expect(response).to eq(
|
188
|
+
expect(response).to eq("Jones, Matt")
|
169
189
|
end
|
170
190
|
|
171
|
-
it
|
191
|
+
it "no author" do
|
172
192
|
response = subject.authors_as_string(nil)
|
173
193
|
expect(response.nil?).to be(true)
|
174
194
|
end
|
175
195
|
|
176
|
-
it
|
196
|
+
it "with organization" do
|
177
197
|
response = subject.authors_as_string(authors)
|
178
|
-
expect(response).to eq(
|
198
|
+
expect(response).to eq("Jones, Matt and Slaughter, Peter and {University of California, Santa Barbara}")
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
context "get_affiliations" do
|
203
|
+
it "name" do
|
204
|
+
affiliation = [{ 'name' => 'University of Zurich, Zurich, Switzerland' }]
|
205
|
+
response = subject.get_affiliations(affiliation)
|
206
|
+
expect(response).to eq([{ 'name' => 'University of Zurich, Zurich, Switzerland' }])
|
207
|
+
end
|
208
|
+
|
209
|
+
it "name and ROR ID" do
|
210
|
+
affiliation = { "id" => "https://ror.org/02t274463",
|
211
|
+
"name" => "University of California, Santa Barbara" }
|
212
|
+
response = subject.get_affiliations(affiliation)
|
213
|
+
expect(response).to eq([{ "name" => "University of California, Santa Barbara" }])
|
214
|
+
end
|
215
|
+
|
216
|
+
it "only ROR ID" do
|
217
|
+
affiliation = { "affiliationIdentifier" => "https://ror.org/02t274463" }
|
218
|
+
response = subject.get_affiliations(affiliation)
|
219
|
+
expect(response).to eq([{"id"=>"https://ror.org/02t274463"}])
|
179
220
|
end
|
180
221
|
end
|
181
222
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://rogue-scholar.org/api/posts/a163e340-5b3c-4736-9ab0-8c54fdff6a3c
|
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
|
+
- '2017'
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Date:
|
30
|
+
- Tue, 20 Jun 2023 19:17:19 GMT
|
31
|
+
Etag:
|
32
|
+
- '"hpv2dd3pyd1jt"'
|
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::jwz7p-1687288639219-41a872c06d7b
|
43
|
+
Connection:
|
44
|
+
- close
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: "{\"id\":\"https://doi.org/10.59350/g6bth-b6f85\",\"uuid\":\"a163e340-5b3c-4736-9ab0-8c54fdff6a3c\",\"url\":\"https://lab.sub.uni-goettingen.de/welcome.html\",\"title\":\"Welcome
|
48
|
+
to the Lab\",\"summary\":\"Welcome everyone! This is the place to read about
|
49
|
+
projects, resources and all the things we deal with at our work on digital
|
50
|
+
collections, databases, APIs, tools and esoteric programming languages we
|
51
|
+
prefer to write in. It is not meant for a single subject, but covers all topics
|
52
|
+
we \U0001F496. So I hope you don’t mind if the next post is about one of my
|
53
|
+
adorable cute rabbits.\",\"date_published\":\"2017-01-01T00:00:01Z\",\"date_modified\":\"2017-01-01T00:00:01Z\",\"date_indexed\":\"2023-06-20T09:15:18+00:00\",\"authors\":[{\"url\":\"https://ror.org/05745n787\",\"name\":null}],\"image\":\"https://lab.sub.uni-goettingen.de/assets/images/Bibliothek_der_UNI_Goettingen-wikiCommons-Suhaknoke.webp\",\"content_html\":\"<p>Welcome
|
54
|
+
everyone!</p> <p>This is the place to read about projects, resources and all
|
55
|
+
the things we deal with at our work on digital collections, databases, APIs,
|
56
|
+
tools and esoteric programming languages we prefer to write in. It is <em>not</em>
|
57
|
+
meant for a single subject, but covers all topics we \U0001F496. So I hope
|
58
|
+
you don’t mind if the next post is about one of my adorable cute rabbits.</p>\",\"tags\":[\"meta\"],\"language\":\"en\",\"references\":null,\"blog_id\":\"6hezn63\",\"blog\":{\"id\":\"6hezn63\",\"title\":\"lab.sub
|
59
|
+
- Articles\",\"description\":\"Better sit thus, and observe thy strange things\",\"language\":\"en\",\"favicon\":null,\"feed_url\":\"https://lab.sub.uni-goettingen.de/atom.xml\",\"home_page_url\":\"https://lab.sub.uni-goettingen.de/\",\"user_id\":\"8498eaf6-8c58-4b58-bc15-27eda292b1aa\",\"created_at\":\"2023-06-11T08:09:50+00:00\",\"indexed_at\":\"2023-04-24\",\"feed_format\":\"application/atom+xml\",\"license\":\"https://creativecommons.org/licenses/by/4.0/legalcode\",\"generator\":\"Jekyll\",\"category\":\"Engineering
|
60
|
+
and Technology\",\"prefix\":\"10.59350\",\"modified_at\":\"2023-06-01T00:00:01+00:00\",\"version\":\"https://jsonfeed.org/version/1.1\",\"backlog\":false,\"authors\":null}}"
|
61
|
+
recorded_at: Tue, 20 Jun 2023 19:17:19 GMT
|
62
|
+
recorded_with: VCR 6.1.0
|
@@ -0,0 +1,303 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://doi.org/ra/10.1177
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Connection:
|
11
|
+
- close
|
12
|
+
Host:
|
13
|
+
- doi.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
|
+
- Wed, 21 Jun 2023 06:59:57 GMT
|
23
|
+
Content-Type:
|
24
|
+
- application/json;charset=UTF-8
|
25
|
+
Transfer-Encoding:
|
26
|
+
- chunked
|
27
|
+
Connection:
|
28
|
+
- close
|
29
|
+
Permissions-Policy:
|
30
|
+
- interest-cohort=(),browsing-topics=()
|
31
|
+
Cf-Cache-Status:
|
32
|
+
- DYNAMIC
|
33
|
+
Report-To:
|
34
|
+
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=WU%2FllRC0hBlvN%2BLUIqA5%2BpFmmTvjgA9UpuYKwtTSGR9wNtn%2BBm3WDuXw0nJZp2KAsMUk8vPlHwYo2DVBHZraAkB9xnnlHKWG2wDoY0OuZx%2BWIjgu%2FJoB62ox8a%2FaYk%2B%2BNrCbUYE%3D"}],"group":"cf-nel","max_age":604800}'
|
35
|
+
Nel:
|
36
|
+
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
|
37
|
+
Strict-Transport-Security:
|
38
|
+
- max-age=31536000; includeSubDomains; preload
|
39
|
+
Server:
|
40
|
+
- cloudflare
|
41
|
+
Cf-Ray:
|
42
|
+
- 7daa5f2ad84d0a69-AMS
|
43
|
+
Alt-Svc:
|
44
|
+
- h3=":443"; ma=86400
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: |-
|
48
|
+
[
|
49
|
+
{
|
50
|
+
"DOI": "10.1177",
|
51
|
+
"RA": "Crossref"
|
52
|
+
}
|
53
|
+
]
|
54
|
+
recorded_at: Wed, 21 Jun 2023 06:59:57 GMT
|
55
|
+
- request:
|
56
|
+
method: get
|
57
|
+
uri: https://api.crossref.org/works/10.1177/0042098011428175
|
58
|
+
body:
|
59
|
+
encoding: UTF-8
|
60
|
+
string: ''
|
61
|
+
headers:
|
62
|
+
Connection:
|
63
|
+
- close
|
64
|
+
Host:
|
65
|
+
- api.crossref.org
|
66
|
+
User-Agent:
|
67
|
+
- http.rb/5.1.1
|
68
|
+
response:
|
69
|
+
status:
|
70
|
+
code: 200
|
71
|
+
message: OK
|
72
|
+
headers:
|
73
|
+
Date:
|
74
|
+
- Wed, 21 Jun 2023 06:59:57 GMT
|
75
|
+
Content-Type:
|
76
|
+
- application/json
|
77
|
+
Transfer-Encoding:
|
78
|
+
- chunked
|
79
|
+
Access-Control-Expose-Headers:
|
80
|
+
- Link
|
81
|
+
Access-Control-Allow-Headers:
|
82
|
+
- X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language,
|
83
|
+
Accept-Ranges, Cache-Control
|
84
|
+
Access-Control-Allow-Origin:
|
85
|
+
- "*"
|
86
|
+
Server:
|
87
|
+
- Jetty(9.4.40.v20210413)
|
88
|
+
X-Ratelimit-Limit:
|
89
|
+
- '50'
|
90
|
+
X-Ratelimit-Interval:
|
91
|
+
- 1s
|
92
|
+
X-Api-Pool:
|
93
|
+
- public
|
94
|
+
X-Rate-Limit-Limit:
|
95
|
+
- '50'
|
96
|
+
X-Rate-Limit-Interval:
|
97
|
+
- 1s
|
98
|
+
Permissions-Policy:
|
99
|
+
- interest-cohort=()
|
100
|
+
Connection:
|
101
|
+
- close
|
102
|
+
body:
|
103
|
+
encoding: UTF-8
|
104
|
+
string: '{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,5,7]],"date-time":"2023-05-07T19:48:38Z","timestamp":1683488918534},"reference-count":54,"publisher":"SAGE
|
105
|
+
Publications","issue":"11","license":[{"start":{"date-parts":[[2011,12,22]],"date-time":"2011-12-22T00:00:00Z","timestamp":1324512000000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/journals.sagepub.com\/page\/policies\/text-and-data-mining-license"}],"content-domain":{"domain":["journals.sagepub.com"],"crossmark-restriction":true},"short-container-title":["Urban
|
106
|
+
Studies"],"published-print":{"date-parts":[[2012,11]]},"abstract":"<jats:p>
|
107
|
+
In this article, the case of Cluj\/Kolozsvar, regional capital of Transylvania,
|
108
|
+
is analysed in order to uncover the geographies of power in which the workers,
|
109
|
+
a category that has often been analytically silenced, have had an important
|
110
|
+
role in reframing the landscape of the city. Principal component analysis
|
111
|
+
is used to clarify the city\u2019s socialist and post-socialist urbanisation
|
112
|
+
processes, and the qualitative data show how the workers appropriated the
|
113
|
+
urban space in a nationalist manner. The workers\u2019 tactics had an important
|
114
|
+
impact, from a relational perspective, on the spatial strategies of the emerging
|
115
|
+
post-socialist middle class. <\/jats:p>","DOI":"10.1177\/0042098011428175","type":"journal-article","created":{"date-parts":[[2011,12,23]],"date-time":"2011-12-23T05:16:52Z","timestamp":1324617412000},"page":"2377-2397","update-policy":"http:\/\/dx.doi.org\/10.1177\/sage-journals-update-policy","source":"Crossref","is-referenced-by-count":16,"title":["Workers
|
116
|
+
and the City: Rethinking the Geographies of Power in Post-socialist Urbanisation"],"prefix":"10.1177","volume":"49","author":[{"given":"Norbert","family":"Petrovici","sequence":"first","affiliation":[{"name":"\u00a0"}]}],"member":"179","published-online":{"date-parts":[[2011,12,22]]},"reference":[{"issue":"3","key":"atypb1","first-page":"110","volume":"5","author":"Belkis\u00a0D.","year":"2003","journal-title":"IDEA
|
117
|
+
Arta \u015fi Societate"},{"key":"atypb2","unstructured":"Bodnar\u00a0J.Evil
|
118
|
+
Paradises: Dreamworlds of Neoliberalism. Davis\u00a0M., Monk\u00a0D., ed.
|
119
|
+
New York: New Press; 2007:140-151."},{"issue":"2","key":"atypb3","first-page":"53","volume":"19","author":"Burawoy\u00a0M.","year":"1989","journal-title":"Socialist
|
120
|
+
Review"},{"issue":"4","key":"atypb4","doi-asserted-by":"crossref","first-page":"1099","DOI":"10.1086\/320299","volume":"106","author":"Burawoy\u00a0M.","year":"2001","journal-title":"American
|
121
|
+
Journal of Sociology"},{"key":"atypb5","doi-asserted-by":"publisher","DOI":"10.1086\/210402"},{"key":"atypb6","doi-asserted-by":"publisher","DOI":"10.1017\/S0010417503000331"},{"key":"atypb7","volume-title":"Privatizing
|
122
|
+
Poland: Baby Food, Big Business, and the Remaking of Labor","author":"Dunn\u00a0E.
|
123
|
+
C.","year":"2004"},{"key":"atypb8","volume-title":"Making Capitalism without
|
124
|
+
Capitalists: Class Formation and Elite Struggles in Post-communist Central
|
125
|
+
Europe","author":"Eyal\u00a0G.","year":"1998"},{"key":"atypb9","doi-asserted-by":"publisher","DOI":"10.1086\/320300"},{"key":"atypb10","volume-title":"From
|
126
|
+
the Cult of Waste to the Trash Heap of History: The Politics of Waste in Socialist
|
127
|
+
and Postsocialist Hungary","author":"Gille\u00a0Z.","year":"2007"},{"key":"atypb11","volume-title":"Transformation
|
128
|
+
of Cities in Central and Eastern Europe","author":"Hamilton\u00a0F. E. I.","year":"2006"},{"key":"atypb12","doi-asserted-by":"publisher","DOI":"10.1080\/13604810903298672"},{"key":"atypb13","doi-asserted-by":"publisher","DOI":"10.1080\/13604810903579287"},{"key":"atypb14","doi-asserted-by":"publisher","DOI":"10.1525\/9780520936102"},{"key":"atypb15","doi-asserted-by":"publisher","DOI":"10.1017\/S0020859009990630"},{"key":"atypb16","unstructured":"Hirt\u00a0S.,Kovachev\u00a0A.The
|
129
|
+
Urban Mosaic of Post-socialist Eastern Europe. Tsenkova\u00a0S., Nedovic-Budic\u00a0Z.,
|
130
|
+
ed. Dordrecht: Springer; 2006:112-130."},{"key":"atypb17","doi-asserted-by":"publisher","DOI":"10.1017\/S0147547905000189"},{"key":"atypb18","doi-asserted-by":"publisher","DOI":"10.1146\/annurev.so.06.080180.002245"},{"key":"atypb19","doi-asserted-by":"publisher","DOI":"10.1007\/BF00993596"},{"key":"atypb20","volume-title":"Expanding
|
131
|
+
Class: Power and Everyday Politics in Industrial Communities","author":"Kalb\u00a0D.","year":"1997"},{"key":"atypb21","volume-title":"Working-class
|
132
|
+
Formation: Nineteenth-century Patterns in Western Europe and the United States","author":"Katznelson\u00a0I.","year":"1986"},{"issue":"4","key":"atypb22","first-page":"399","volume":"12","author":"Kideckel\u00a0D.","year":"1988","journal-title":"Dialectical
|
133
|
+
Anthropology"},{"key":"atypb23","unstructured":"Kideckel\u00a0D.Postsocialism:
|
134
|
+
Ideals, Ideologies, and Practices in Eurasia. Hann\u00a0C., ed. London: Routledge;
|
135
|
+
2002:114-132."},{"key":"atypb24","volume-title":"Getting by in Postsocialist
|
136
|
+
Romania: Labor, the Body, and Working Class Culture","author":"Kideckel\u00a0D.","year":"2008"},{"key":"atypb25","doi-asserted-by":"publisher","DOI":"10.1016\/j.cities.2006.02.002"},{"key":"atypb26","first-page":"70","volume":"46","author":"Lascu\u00a0N.","year":"2006","journal-title":"Arhitectura"},{"key":"atypb27","first-page":"13","volume":"1","author":"Lascu\u00a0N.","year":"1979","journal-title":"Arhitectura"},{"key":"atypb28","first-page":"125","volume":"15","author":"Lazar\u00a0M.","year":"2003","journal-title":"IDEA
|
137
|
+
Arts and Society"},{"key":"atypb29","volume-title":"Vital statistics in the
|
138
|
+
city of Cluj-Napoca","year":"2007"},{"key":"atypb30","volume-title":"The Social
|
139
|
+
Impact of Informal Economies in Eastern Europe","author":"Neef\u00a0R.","year":"2002"},{"key":"atypb31","volume-title":"The
|
140
|
+
Defeat of Solidarity: Anger and Politics in Postcommunist Europe","author":"Ost\u00a0D.","year":"2005"},{"issue":"2","key":"atypb32","first-page":"9","volume":"53","author":"Ourednicek\u00a0M.","year":"2009","journal-title":"Studia
|
141
|
+
Sociologie"},{"key":"atypb33","doi-asserted-by":"publisher","DOI":"10.4324\/9780203881927"},{"key":"atypb34","unstructured":"Petrovici\u00a0N.Headlines
|
142
|
+
of Nationalism, Subtexts of Class. Kalb\u00a0D., Halmai\u00a0G., ed. New York:
|
143
|
+
Berghahn Books; 2011:57-77."},{"key":"atypb35","doi-asserted-by":"publisher","DOI":"10.1017\/S0147547905000165"},{"issue":"1","key":"atypb36","doi-asserted-by":"crossref","first-page":"130","DOI":"10.1163\/187633009X411539","volume":"36","author":"Poenaru\u00a0F.","year":"2009","journal-title":"East
|
144
|
+
Central Europe"},{"issue":"1","key":"atypb37","first-page":"55","volume":"17","author":"Riabchuk\u00a0A.","year":"2009","journal-title":"Debatte"},{"key":"atypb38","doi-asserted-by":"publisher","DOI":"10.1023\/A:1022435000258"},{"key":"atypb39","doi-asserted-by":"publisher","DOI":"10.1177\/0011392104046619"},{"key":"atypb40","doi-asserted-by":"publisher","DOI":"10.1080\/13604810902982250"},{"key":"atypb41","doi-asserted-by":"publisher","DOI":"10.1080\/13604811003633719"},{"key":"atypb42","doi-asserted-by":"publisher","DOI":"10.1111\/j.1467-8330.2008.00592.x"},{"key":"atypb43","doi-asserted-by":"publisher","DOI":"10.1002\/9780470712733.ch3"},{"key":"atypb44","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4020-6053-3"},{"key":"atypb45","doi-asserted-by":"publisher","DOI":"10.1111\/j.1467-8330.2008.00573.x"},{"key":"atypb46","doi-asserted-by":"publisher","DOI":"10.1080\/02673039982678"},{"key":"atypb47","unstructured":"Szel\u00e9nyi\u00a0I.,Kostello\u00a0E.The
|
145
|
+
New Institutionalism in Sociology. Nee\u00a0V., Brinton\u00a0M., ed. New York:
|
146
|
+
Russell Sage Foundation; 1998:305-326."},{"key":"atypb48","volume-title":"The
|
147
|
+
Poverty of Theory and Other Essays","author":"Thompson\u00a0E. P.","year":"1978"},{"key":"atypb49","volume-title":"Stalinism
|
148
|
+
for All Seasons: A Political History of Romanian Communism","author":"Tism\u0103neanu\u00a0V.","year":"2003"},{"key":"atypb50","unstructured":"Tosics\u00a0I.Transformation
|
149
|
+
of Cities in Central and Eastern Europe. Hamilton\u00a0F. E. I., Dimitrowska
|
150
|
+
Andrews\u00a0K., Pichler-Milanovic\u00a0N., ed. Tokyo: United Nations University
|
151
|
+
Press; 2006:47-78."},{"key":"atypb51","volume-title":"S\u0103p\u0103tor \u00een
|
152
|
+
Pia\u0163a Discordiei","author":"Tripon\u00a0M.","year":"2005"},{"issue":"3","key":"atypb52","first-page":"130","volume":"5","author":"Troc\u00a0G.","year":"2003","journal-title":"IDEA
|
153
|
+
Arta \u015fi Societate"},{"key":"atypb53","doi-asserted-by":"publisher","DOI":"10.1007\/3-7908-1727-9"},{"key":"atypb54","doi-asserted-by":"publisher","DOI":"10.1017\/S0010417500019903"}],"container-title":["Urban
|
154
|
+
Studies"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/journals.sagepub.com\/doi\/pdf\/10.1177\/0042098011428175","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/journals.sagepub.com\/doi\/pdf\/10.1177\/0042098011428175","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,5,16]],"date-time":"2021-05-16T13:53:27Z","timestamp":1621173207000},"score":1,"resource":{"primary":{"URL":"http:\/\/journals.sagepub.com\/doi\/10.1177\/0042098011428175"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011,12,22]]},"references-count":54,"journal-issue":{"issue":"11","published-print":{"date-parts":[[2012,11]]}},"alternative-id":["10.1177\/0042098011428175"],"URL":"http:\/\/dx.doi.org\/10.1177\/0042098011428175","relation":{},"ISSN":["0042-0980","1360-063X"],"issn-type":[{"value":"0042-0980","type":"print"},{"value":"1360-063X","type":"electronic"}],"subject":["Urban
|
155
|
+
Studies","Environmental Science (miscellaneous)"],"published":{"date-parts":[[2011,12,22]]}}}'
|
156
|
+
recorded_at: Wed, 21 Jun 2023 06:59:57 GMT
|
157
|
+
- request:
|
158
|
+
method: get
|
159
|
+
uri: https://api.crossref.org/members/179
|
160
|
+
body:
|
161
|
+
encoding: UTF-8
|
162
|
+
string: ''
|
163
|
+
headers:
|
164
|
+
Connection:
|
165
|
+
- close
|
166
|
+
Host:
|
167
|
+
- api.crossref.org
|
168
|
+
User-Agent:
|
169
|
+
- http.rb/5.1.1
|
170
|
+
response:
|
171
|
+
status:
|
172
|
+
code: 200
|
173
|
+
message: OK
|
174
|
+
headers:
|
175
|
+
Date:
|
176
|
+
- Wed, 21 Jun 2023 06:59:58 GMT
|
177
|
+
Content-Type:
|
178
|
+
- application/json
|
179
|
+
Transfer-Encoding:
|
180
|
+
- chunked
|
181
|
+
Access-Control-Expose-Headers:
|
182
|
+
- Link
|
183
|
+
Access-Control-Allow-Headers:
|
184
|
+
- X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language,
|
185
|
+
Accept-Ranges, Cache-Control
|
186
|
+
Access-Control-Allow-Origin:
|
187
|
+
- "*"
|
188
|
+
Server:
|
189
|
+
- Jetty(9.4.40.v20210413)
|
190
|
+
X-Ratelimit-Limit:
|
191
|
+
- '50'
|
192
|
+
X-Ratelimit-Interval:
|
193
|
+
- 1s
|
194
|
+
X-Api-Pool:
|
195
|
+
- public
|
196
|
+
X-Rate-Limit-Limit:
|
197
|
+
- '50'
|
198
|
+
X-Rate-Limit-Interval:
|
199
|
+
- 1s
|
200
|
+
Permissions-Policy:
|
201
|
+
- interest-cohort=()
|
202
|
+
Connection:
|
203
|
+
- close
|
204
|
+
body:
|
205
|
+
encoding: UTF-8
|
206
|
+
string: '{"status":"ok","message-type":"member","message-version":"1.0.0","message":{"last-status-check-time":1687303488709,"primary-name":"SAGE
|
207
|
+
Publications","counts":{"current-dois":212065,"backfile-dois":2784347,"total-dois":2996412},"breakdowns":{"dois-by-issued-year":[[2020,91760],[2022,87882],[2021,86441],[2014,86188],[2016,84799],[2013,82548],[2017,82500],[2018,80619],[2019,80361],[2012,79247],[2009,76596],[2011,76586],[2015,76217],[2010,75226],[2008,74866],[2007,68850],[2006,65904],[2005,65225],[2004,63509],[2003,55361],[2002,53945],[2001,51620],[2000,50472],[1999,47214],[1998,44564],[1997,44102],[1996,42534],[1995,39264],[2023,37732],[1993,37730],[1994,37125],[1992,35237],[1991,33677],[1990,33622],[1989,31761],[1988,30972],[1987,29341],[1986,27580],[1985,25638],[1984,25249],[1983,24813],[1982,23828],[1981,22728],[1980,22144],[1979,21740],[1978,21186],[1977,20376],[1976,19956],[1974,19050],[1975,18677],[1973,18466],[1972,18370],[1971,16532],[1970,16120],[1969,16059],[1968,15300],[1967,14944],[1966,14403],[1965,13894],[1964,13126],[1963,12000],[1962,11394],[1961,10670],[1960,10444],[1959,9742],[1958,9005],[1957,8667],[1956,7941],[1955,7757],[1954,7639],[1953,6995],[1951,6892],[1952,6747],[1950,6551],[1949,6338],[1948,5844],[1939,5417],[1947,5211],[1930,5117],[1938,5020],[1931,4982],[1941,4851],[1936,4823],[1940,4736],[1935,4689],[1928,4633],[1946,4630],[1929,4583],[1942,4582],[1937,4557],[1933,4546],[1927,4451],[1932,4398],[1934,4358],[1926,4278],[1945,4173],[1924,4015],[1944,4008],[1943,3997],[1925,3994],[1921,3774],[1922,3719],[1923,3691],[1914,3646],[1913,3378],[1920,3362],[1909,3324],[1915,3231],[1912,3138],[1911,3113],[1919,3080],[1910,3051],[1916,3026],[1908,3016],[1917,2930],[1918,2640],[1906,2434],[1907,2428],[1904,2023],[1903,1796],[1902,1650],[1898,1648],[1899,1632],[1905,1602],[1896,1554],[1894,1433],[1901,1320],[1895,1257],[1892,864],[1897,653],[1893,512],[1900,449],[1891,355],[1890,268],[1887,193],[1886,193],[1885,189],[1881,172],[1888,170],[1884,167],[1889,154],[1883,146],[1882,132],[1879,80],[1880,77],[1856,65],[1858,54],[1853,54],[1847,54],[1823,54],[1860,53],[1859,53],[1850,53],[1878,52],[1852,52],[1857,51],[1851,51],[1877,50],[1862,50],[1827,49],[1855,48],[1876,47],[1873,47],[1864,47],[1871,46],[1869,45],[1867,45],[1874,44],[1861,44],[1865,43],[1816,43],[1863,42],[1875,41],[1866,41],[1848,41],[1868,40],[1854,39],[1821,39],[1872,38],[1870,33],[1818,33],[1811,33],[1844,32],[1819,31],[1815,29],[1814,29],[1817,28],[1813,28],[1843,27],[1838,26],[1840,25],[1839,25],[1849,24],[1845,24],[1812,24],[1831,23],[1842,22],[1835,22],[1809,22],[1846,21],[1837,20],[1841,19],[1832,18],[1829,17],[1828,17],[1833,14],[2024,8],[2103,2]]},"prefixes":["10.1528","10.1606","10.12679","10.3821","10.4137","10.1345","10.2511","10.1106","10.1622","10.1369","10.4219","10.14240","10.4135","10.5126","10.5367","10.5301","10.1243","10.7182","10.2190","10.47515","10.3818","10.2968","10.47594","10.1630","10.1354","10.1258","10.15256","10.3317","10.31124","10.5034","10.2182","10.17322","10.5153","10.1177","10.2189","10.1191","10.5193"],"coverage":{"affiliations-current":0.8446796972626317,"similarity-checking-current":0.9263103293801429,"descriptions-current":0.002791596916039893,"ror-ids-current":0.0,"funders-backfile":0.02452567873185347,"licenses-backfile":0.8441020461889269,"funders-current":0.2638672105250749,"affiliations-backfile":0.6015457125135624,"resource-links-backfile":0.8432594787934119,"orcids-backfile":0.04384295491905283,"update-policies-current":0.914752552283498,"ror-ids-backfile":0.0,"orcids-current":0.716247376983472,"similarity-checking-backfile":0.8617988346998418,"references-backfile":0.4934201807461498,"descriptions-backfile":0.002570441112404452,"award-numbers-backfile":0.01977698900316663,"update-policies-backfile":0.2589666446028458,"licenses-current":0.924914530922123,"award-numbers-current":0.2116945276212482,"abstracts-backfile":0.420136570621406,"resource-links-current":0.9181335911159314,"abstracts-current":0.7917808219178082,"references-current":0.8106854030603824},"prefix":[{"name":"Sage
|
208
|
+
Publications- Academy of Traumatology","value":"10.1528"},{"name":"Alliance
|
209
|
+
for Children and Families","value":"10.1606"},{"name":"Alliance for Children
|
210
|
+
and Families","value":"10.12679"},{"name":"Canadian Pharmacists Journal","value":"10.3821"},{"name":"Libertas
|
211
|
+
Academica, Ltd.","value":"10.4137"},{"name":"Harvey Whitney Books Co.","value":"10.1345"},{"name":"TASH","value":"10.2511"},{"name":"Sage
|
212
|
+
Publications - Technomic Publishing Company","value":"10.1106"},{"name":"SagePublications
|
213
|
+
- National Association of School Nurses","value":"10.1622"},{"name":"Journal
|
214
|
+
of Histochemistry & Cytochemistry","value":"10.1369"},{"name":"Sage Publications
|
215
|
+
(Prufrock Press, Inc.)","value":"10.4219"},{"name":"SAGE","value":"10.14240"},{"name":"Sage
|
216
|
+
Publications - Reference E-Books","value":"10.4135"},{"name":"Excellus Health
|
217
|
+
Plan, Inc.","value":"10.5126"},{"name":"IP Publishing","value":"10.5367"},{"name":"Wichtig
|
218
|
+
Publishing, SRL","value":"10.5301"},{"name":"Research Publishing Services
|
219
|
+
- Professional Engineering Publishing","value":"10.1243"},{"name":"North American
|
220
|
+
Transplant Coordinators Organization","value":"10.7182"},{"name":"Baywood
|
221
|
+
Publishing","value":"10.2190"},{"name":"SAGE Publications","value":"10.47515"},{"name":"Justice
|
222
|
+
Research & Statistics Association","value":"10.3818"},{"name":"Sage Publications
|
223
|
+
- Bulletin of the Atomic Scientists","value":"10.2968"},{"name":"Adam Matthew
|
224
|
+
Digital","value":"10.47594"},{"name":"Sage Publications-International Institute
|
225
|
+
for Environment and Development","value":"10.1630"},{"name":"American College
|
226
|
+
of Veterinary Pathologists","value":"10.1354"},{"name":"The Royal Society
|
227
|
+
of Medicine","value":"10.1258"},{"name":"Swiss Medical Press, GmbH","value":"10.15256"},{"name":"Sage
|
228
|
+
Publications (JRAAS Limited)","value":"10.3317"},{"name":"SAGE Publications","value":"10.31124"},{"name":"Excellus
|
229
|
+
Health Plan, Inc.","value":"10.5034"},{"name":"Canadian Association of Occupational
|
230
|
+
Therapists","value":"10.2182"},{"name":"Sage - Corwin","value":"10.17322"},{"name":"Sociological
|
231
|
+
Research Online","value":"10.5153"},{"name":"SAGE Publications","value":"10.1177"},{"name":"Johnson
|
232
|
+
Graduate School of Management, Cornell University","value":"10.2189"},{"name":"Arnold
|
233
|
+
Publishers","value":"10.1191"},{"name":"Association for Experimental Education","value":"10.5193"}],"id":179,"tokens":["sage","publications"],"counts-type":{"all":{"book-section":618,"monograph":4954,"report":109,"peer-review":3263,"journal-article":2730067,"other":2412,"book":4438,"reference-entry":138463,"journal":153,"component":250,"book-chapter":98893,"database":524,"reference-book":8645,"posted-content":3226,"journal-issue":3015,"edited-book":29},"backfile":{"monograph":4812,"report":98,"journal-article":2534652,"other":99,"book":3065,"reference-entry":131213,"component":24,"book-chapter":91329,"database":325,"reference-book":7126,"posted-content":1788,"journal-issue":2992,"edited-book":13},"current":{"monograph":142,"report":11,"peer-review":3263,"journal-article":195415,"other":1957,"book":1373,"reference-entry":2415,"book-chapter":3901,"database":199,"reference-book":1519,"posted-content":1438,"journal-issue":23,"edited-book":16}},"coverage-type":{"all":{"book-section":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.1731391585760518,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"monograph":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":6.055712555510698E-4,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.1626968106580541,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"report":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.009174311926605505,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"peer-review":{"last-status-check-time":1687303488709,"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},"journal-article":{"last-status-check-time":1687303488709,"affiliations":0.6791097068313708,"abstracts":0.4888063186727652,"orcids":0.0999975458477759,"licenses":0.9311731177293451,"references":0.5662025877020601,"funders":0.04550987210203999,"similarity-checking":0.9372458624641813,"award-numbers":0.03661411972673198,"ror-ids":0.0,"update-policies":0.3351712613646478,"resource-links":0.9309687271411288,"descriptions":0.0},"other":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.01990049751243781,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"book":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.002478593961243804,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.1266336187471834,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"reference-entry":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.1040855679856713,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"journal":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.07189542483660132,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"component":{"last-status-check-time":1687303488709,"affiliations":0.096,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.26,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.2},"book-chapter":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.1480691252161427,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"database":{"last-status-check-time":1687303488709,"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.9980916030534351},"reference-book":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.2202429149797571,"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":1687303488709,"affiliations":0.0,"abstracts":1.0,"orcids":0.2991320520768754,"licenses":1.0,"references":0.0,"funders":0.0,"similarity-checking":0.9820210787352759,"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":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.3396351575456053,"references":0.0,"funders":0.0,"similarity-checking":0.2530679933665008,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.3396351575456053,"descriptions":0.0},"edited-book":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.03448275862068966,"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":{"monograph":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.1674979218620116,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"report":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.01020408163265306,"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":1687303488709,"affiliations":0.6607960382727096,"abstracts":0.4608198679739862,"orcids":0.04795253944131186,"licenses":0.9261472580851337,"references":0.5420282547663348,"funders":0.02694176557570822,"similarity-checking":0.9325556328837253,"award-numbers":0.02172527037242193,"ror-ids":0.0,"update-policies":0.284478105870155,"resource-links":0.9259271095203602,"descriptions":0.0},"other":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.0303030303030303,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"book":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.1833605220228385,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"reference-entry":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.1071235319671069,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"component":{"last-status-check-time":1687303488709,"affiliations":1.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.9583333333333333,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":1.0},"book-chapter":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.1518575698847026,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"database":{"last-status-check-time":1687303488709,"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.9969230769230769},"reference-book":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.2671905697445972,"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":1687303488709,"affiliations":0.0,"abstracts":1.0,"orcids":0.2969798657718121,"licenses":1.0,"references":0.0,"funders":0.0,"similarity-checking":0.9899328859060403,"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":1687303488709,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.3422459893048128,"references":0.0,"funders":0.0,"similarity-checking":0.2550133689839572,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.3422459893048128,"descriptions":0.0},"edited-book":{"last-status-check-time":1687303488709,"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":{"monograph":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.02112676056338028,"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},"report":{"last-status-check-time":1687303488709,"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},"peer-review":{"last-status-check-time":1687303488709,"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},"journal-article":{"last-status-check-time":1687303488709,"affiliations":0.9166491825090193,"abstracts":0.8518076913235934,"orcids":0.7750530921372464,"licenses":0.996361589437863,"references":0.8797584627587443,"funders":0.2863495637489446,"similarity-checking":0.9980810070874805,"award-numbers":0.2297315968579689,"ror-ids":0.0,"update-policies":0.9926924749891257,"resource-links":0.996361589437863,"descriptions":0.0},"other":{"last-status-check-time":1687303488709,"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},"book":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.008011653313911142,"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},"reference-entry":{"last-status-check-time":1687303488709,"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},"book-chapter":{"last-status-check-time":1687303488709,"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},"database":{"last-status-check-time":1687303488709,"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":1.0},"reference-book":{"last-status-check-time":1687303488709,"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":1687303488709,"affiliations":0.0,"abstracts":1.0,"orcids":0.301808066759388,"licenses":1.0,"references":0.0,"funders":0.0,"similarity-checking":0.972183588317107,"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":1687303488709,"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},"edited-book":{"last-status-check-time":1687303488709,"affiliations":0.0,"abstracts":0.0625,"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}}},"flags":{"deposits-abstracts-current":true,"deposits-orcids-current":true,"deposits":true,"deposits-affiliations-backfile":true,"deposits-update-policies-backfile":true,"deposits-similarity-checking-backfile":true,"deposits-award-numbers-current":true,"deposits-resource-links-current":true,"deposits-ror-ids-current":false,"deposits-articles":true,"deposits-affiliations-current":true,"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":true,"deposits-references-current":true,"deposits-resource-links-backfile":true,"deposits-descriptions-backfile":true,"deposits-orcids-backfile":true,"deposits-funders-backfile":true,"deposits-update-policies-current":true,"deposits-similarity-checking-current":true,"deposits-licenses-current":true},"location":"Thousand
|
234
|
+
Oaks, CA, United States","names":["SAGE Publications","Sage Publications-
|
235
|
+
Academy of Traumatology","Alliance for Children and Families","Canadian Pharmacists
|
236
|
+
Journal","Libertas Academica, Ltd.","Harvey Whitney Books Co.","TASH","Sage
|
237
|
+
Publications - Technomic Publishing Company","SagePublications - National
|
238
|
+
Association of School Nurses","Journal of Histochemistry & Cytochemistry","Sage
|
239
|
+
Publications (Prufrock Press, Inc.)","SAGE","Sage Publications - Reference
|
240
|
+
E-Books","Excellus Health Plan, Inc.","IP Publishing","Wichtig Publishing,
|
241
|
+
SRL","Research Publishing Services - Professional Engineering Publishing","North
|
242
|
+
American Transplant Coordinators Organization","Baywood Publishing","Justice
|
243
|
+
Research & Statistics Association","Sage Publications - Bulletin of the Atomic
|
244
|
+
Scientists","Adam Matthew Digital","Sage Publications-International Institute
|
245
|
+
for Environment and Development","American College of Veterinary Pathologists","The
|
246
|
+
Royal Society of Medicine","Swiss Medical Press, GmbH","Sage Publications
|
247
|
+
(JRAAS Limited)","Canadian Association of Occupational Therapists","Sage -
|
248
|
+
Corwin","Sociological Research Online","Johnson Graduate School of Management,
|
249
|
+
Cornell University","Arnold Publishers","Association for Experimental Education"]}}'
|
250
|
+
recorded_at: Wed, 21 Jun 2023 06:59:58 GMT
|
251
|
+
- request:
|
252
|
+
method: get
|
253
|
+
uri: https://doi.org/ra/10.1177
|
254
|
+
body:
|
255
|
+
encoding: UTF-8
|
256
|
+
string: ''
|
257
|
+
headers:
|
258
|
+
Connection:
|
259
|
+
- close
|
260
|
+
Host:
|
261
|
+
- doi.org
|
262
|
+
User-Agent:
|
263
|
+
- http.rb/5.1.1
|
264
|
+
response:
|
265
|
+
status:
|
266
|
+
code: 200
|
267
|
+
message: OK
|
268
|
+
headers:
|
269
|
+
Date:
|
270
|
+
- Wed, 21 Jun 2023 06:59:59 GMT
|
271
|
+
Content-Type:
|
272
|
+
- application/json;charset=UTF-8
|
273
|
+
Transfer-Encoding:
|
274
|
+
- chunked
|
275
|
+
Connection:
|
276
|
+
- close
|
277
|
+
Permissions-Policy:
|
278
|
+
- interest-cohort=(),browsing-topics=()
|
279
|
+
Cf-Cache-Status:
|
280
|
+
- DYNAMIC
|
281
|
+
Report-To:
|
282
|
+
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=bNbXRHfVukPPYrYk5wu4g0iPpSEzVd6QktB0GY1pi0vzya1wxGq3qXom7Z08n4sqBwgUc2hkYILxL1FOyAVDgh%2FSPJrsDIeyK0hzTPlV1%2FZEB23Lu4sZm3RpnGSyLNQ7vbSuY6U%3D"}],"group":"cf-nel","max_age":604800}'
|
283
|
+
Nel:
|
284
|
+
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
|
285
|
+
Strict-Transport-Security:
|
286
|
+
- max-age=31536000; includeSubDomains; preload
|
287
|
+
Server:
|
288
|
+
- cloudflare
|
289
|
+
Cf-Ray:
|
290
|
+
- 7daa5f363859b76c-AMS
|
291
|
+
Alt-Svc:
|
292
|
+
- h3=":443"; ma=86400
|
293
|
+
body:
|
294
|
+
encoding: UTF-8
|
295
|
+
string: |-
|
296
|
+
[
|
297
|
+
{
|
298
|
+
"DOI": "10.1177",
|
299
|
+
"RA": "Crossref"
|
300
|
+
}
|
301
|
+
]
|
302
|
+
recorded_at: Wed, 21 Jun 2023 06:59:59 GMT
|
303
|
+
recorded_with: VCR 6.1.0
|
@@ -0,0 +1,62 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://rogue-scholar.org/api/posts/a163e340-5b3c-4736-9ab0-8c54fdff6a3c
|
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
|
+
- '2017'
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Date:
|
30
|
+
- Tue, 20 Jun 2023 19:25:14 GMT
|
31
|
+
Etag:
|
32
|
+
- '"hpv2dd3pyd1jt"'
|
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::rfqk5-1687289113815-cb42220988ef
|
43
|
+
Connection:
|
44
|
+
- close
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: "{\"id\":\"https://doi.org/10.59350/g6bth-b6f85\",\"uuid\":\"a163e340-5b3c-4736-9ab0-8c54fdff6a3c\",\"url\":\"https://lab.sub.uni-goettingen.de/welcome.html\",\"title\":\"Welcome
|
48
|
+
to the Lab\",\"summary\":\"Welcome everyone! This is the place to read about
|
49
|
+
projects, resources and all the things we deal with at our work on digital
|
50
|
+
collections, databases, APIs, tools and esoteric programming languages we
|
51
|
+
prefer to write in. It is not meant for a single subject, but covers all topics
|
52
|
+
we \U0001F496. So I hope you don’t mind if the next post is about one of my
|
53
|
+
adorable cute rabbits.\",\"date_published\":\"2017-01-01T00:00:01Z\",\"date_modified\":\"2017-01-01T00:00:01Z\",\"date_indexed\":\"2023-06-20T09:15:18+00:00\",\"authors\":[{\"url\":\"https://ror.org/05745n787\",\"name\":null}],\"image\":\"https://lab.sub.uni-goettingen.de/assets/images/Bibliothek_der_UNI_Goettingen-wikiCommons-Suhaknoke.webp\",\"content_html\":\"<p>Welcome
|
54
|
+
everyone!</p> <p>This is the place to read about projects, resources and all
|
55
|
+
the things we deal with at our work on digital collections, databases, APIs,
|
56
|
+
tools and esoteric programming languages we prefer to write in. It is <em>not</em>
|
57
|
+
meant for a single subject, but covers all topics we \U0001F496. So I hope
|
58
|
+
you don’t mind if the next post is about one of my adorable cute rabbits.</p>\",\"tags\":[\"meta\"],\"language\":\"en\",\"references\":null,\"blog_id\":\"6hezn63\",\"blog\":{\"id\":\"6hezn63\",\"title\":\"lab.sub
|
59
|
+
- Articles\",\"description\":\"Better sit thus, and observe thy strange things\",\"language\":\"en\",\"favicon\":null,\"feed_url\":\"https://lab.sub.uni-goettingen.de/atom.xml\",\"home_page_url\":\"https://lab.sub.uni-goettingen.de/\",\"user_id\":\"8498eaf6-8c58-4b58-bc15-27eda292b1aa\",\"created_at\":\"2023-06-11T08:09:50+00:00\",\"indexed_at\":\"2023-04-24\",\"feed_format\":\"application/atom+xml\",\"license\":\"https://creativecommons.org/licenses/by/4.0/legalcode\",\"generator\":\"Jekyll\",\"category\":\"Engineering
|
60
|
+
and Technology\",\"prefix\":\"10.59350\",\"modified_at\":\"2023-06-01T00:00:01+00:00\",\"version\":\"https://jsonfeed.org/version/1.1\",\"backlog\":false,\"authors\":null}}"
|
61
|
+
recorded_at: Tue, 20 Jun 2023 19:25:14 GMT
|
62
|
+
recorded_with: VCR 6.1.0
|
@@ -228,8 +228,7 @@ describe Commonmeta::Metadata, vcr: true do
|
|
228
228
|
it "ghost post with organizational author" do
|
229
229
|
input = "https://rogue-scholar.org/api/posts/5561f8e4-2ff1-4186-a8d5-8dacb3afe414"
|
230
230
|
subject = described_class.new(input: input)
|
231
|
-
|
232
|
-
# expect(subject.valid?).to be true
|
231
|
+
expect(subject.valid?).to be true
|
233
232
|
expect(subject.id).to eq("https://libscie.org/ku-leuven-supports-researchequals")
|
234
233
|
expect(subject.url).to eq("https://libscie.org/ku-leuven-supports-researchequals")
|
235
234
|
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "5561f8e4-2ff1-4186-a8d5-8dacb3afe414", "alternateIdentifierType" => "UUID" }])
|
@@ -251,6 +250,31 @@ describe Commonmeta::Metadata, vcr: true do
|
|
251
250
|
expect(subject.references).to be_nil
|
252
251
|
end
|
253
252
|
|
253
|
+
it "jekyll post with anonymous author" do
|
254
|
+
input = "https://rogue-scholar.org/api/posts/a163e340-5b3c-4736-9ab0-8c54fdff6a3c"
|
255
|
+
subject = described_class.new(input: input)
|
256
|
+
expect(subject.valid?).to be true
|
257
|
+
expect(subject.id).to eq("https://doi.org/10.59350/g6bth-b6f85")
|
258
|
+
expect(subject.url).to eq("https://lab.sub.uni-goettingen.de/welcome.html")
|
259
|
+
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "a163e340-5b3c-4736-9ab0-8c54fdff6a3c", "alternateIdentifierType" => "UUID" }])
|
260
|
+
expect(subject.type).to eq("Article")
|
261
|
+
expect(subject.creators.length).to eq(1)
|
262
|
+
expect(subject.creators.first).to eq("affiliation"=>[{"id"=>"https://ror.org/05745n787"}], "type"=>"Person")
|
263
|
+
expect(subject.titles).to eq([{ "title" => "Welcome to the Lab" }])
|
264
|
+
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
265
|
+
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
266
|
+
expect(subject.date).to eq("published"=>"2017-01-01", "updated"=>"2017-01-01")
|
267
|
+
expect(subject.descriptions.first["description"]).to start_with("Welcome everyone!")
|
268
|
+
expect(subject.publisher).to eq("name" => "lab.sub - Articles")
|
269
|
+
expect(subject.subjects).to eq([{ "subject" => "Engineering and technology" },
|
270
|
+
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
271
|
+
"subject" => "FOS: Engineering and technology",
|
272
|
+
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
273
|
+
expect(subject.language).to eq("en")
|
274
|
+
expect(subject.container).to eq("identifier" => "https://lab.sub.uni-goettingen.de/", "identifierType" => "URL", "title" => "lab.sub - Articles", "type" => "Periodical")
|
275
|
+
expect(subject.references).to be_nil
|
276
|
+
end
|
277
|
+
|
254
278
|
it "blog post with non-url id" do
|
255
279
|
input = "https://rogue-scholar.org/api/posts/1898d2d7-4d87-4487-96c4-3073cf99e9a5"
|
256
280
|
subject = described_class.new(input: input)
|
@@ -279,11 +279,44 @@ describe Commonmeta::Metadata, vcr: true do
|
|
279
279
|
crossref_xml = Hash.from_xml(subject.crossref_xml).dig("doi_batch", "body", "posted_content")
|
280
280
|
expect(Array.wrap(crossref_xml.dig("contributors", "organization")).length).to eq(1)
|
281
281
|
expect(Array.wrap(crossref_xml.dig("contributors",
|
282
|
-
"organization")).first).to eq("
|
282
|
+
"organization")).first).to eq("__content__"=>"Liberate Science", "contributor_role"=>"author", "sequence"=>"first")
|
283
283
|
expect(crossref_xml.dig("titles",
|
284
284
|
"title")).to eq("KU Leuven supports ResearchEquals")
|
285
285
|
expect(crossref_xml.dig('item_number')).to eq("__content__"=>"5561f8e42ff14186a8d58dacb3afe414", "item_number_type"=>"uuid")
|
286
286
|
expect(crossref_xml.dig('group_title')).to eq('Social sciences')
|
287
287
|
end
|
288
|
+
|
289
|
+
it "json_feed_item from rogue scholar with anonymous author" do
|
290
|
+
input = "https://rogue-scholar.org/api/posts/a163e340-5b3c-4736-9ab0-8c54fdff6a3c"
|
291
|
+
subject = described_class.new(input: input, doi: "10.59350/9ry27-7cz42")
|
292
|
+
|
293
|
+
expect(subject.id).to eq("https://doi.org/10.59350/9ry27-7cz42")
|
294
|
+
expect(subject.url).to eq("https://lab.sub.uni-goettingen.de/welcome.html")
|
295
|
+
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "a163e340-5b3c-4736-9ab0-8c54fdff6a3c", "alternateIdentifierType" => "UUID" }])
|
296
|
+
expect(subject.type).to eq("Article")
|
297
|
+
expect(subject.creators.length).to eq(1)
|
298
|
+
expect(subject.creators.first).to eq("affiliation"=>[{"id"=>"https://ror.org/05745n787"}], "type"=>"Person")
|
299
|
+
expect(subject.titles).to eq([{ "title" => "Welcome to the Lab" }])
|
300
|
+
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
301
|
+
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
302
|
+
expect(subject.date).to eq("published"=>"2017-01-01", "updated"=>"2017-01-01")
|
303
|
+
expect(subject.descriptions.first["description"]).to start_with("Welcome everyone!")
|
304
|
+
expect(subject.publisher).to eq("name" => "lab.sub - Articles")
|
305
|
+
expect(subject.subjects).to eq([{ "subject" => "Engineering and technology" },
|
306
|
+
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
307
|
+
"subject" => "FOS: Engineering and technology",
|
308
|
+
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
309
|
+
expect(subject.language).to eq("en")
|
310
|
+
expect(subject.container).to eq("identifier" => "https://lab.sub.uni-goettingen.de/", "identifierType" => "URL", "title" => "lab.sub - Articles", "type" => "Periodical")
|
311
|
+
expect(subject.references).to be_nil
|
312
|
+
crossref_xml = Hash.from_xml(subject.crossref_xml).dig("doi_batch", "body", "posted_content")
|
313
|
+
expect(Array.wrap(crossref_xml.dig("contributors", "anonymous")).length).to eq(1)
|
314
|
+
expect(Array.wrap(crossref_xml.dig("contributors",
|
315
|
+
"anonymous")).first).to eq("affiliations"=>{"institution"=>{"institution_id"=>{"__content__"=>"https://ror.org/05745n787", "type"=>"ror"}}}, "contributor_role"=>"author", "sequence"=>"first")
|
316
|
+
expect(crossref_xml.dig("titles",
|
317
|
+
"title")).to eq("Welcome to the Lab")
|
318
|
+
expect(crossref_xml.dig('item_number')).to eq("__content__"=>"a163e3405b3c47369ab08c54fdff6a3c", "item_number_type"=>"uuid")
|
319
|
+
expect(crossref_xml.dig('group_title')).to eq('Engineering and technology')
|
320
|
+
end
|
288
321
|
end
|
289
322
|
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.3.
|
4
|
+
version: 3.3.8
|
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-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -655,7 +655,7 @@ files:
|
|
655
655
|
- lib/commonmeta/xml_converter.rb
|
656
656
|
- resources/2008/09/xsd.xsl
|
657
657
|
- resources/cff.json
|
658
|
-
- resources/commonmeta_v0.9.
|
658
|
+
- resources/commonmeta_v0.9.2.json
|
659
659
|
- resources/crossref/AccessIndicators.xsd
|
660
660
|
- resources/crossref/JATS-journalpublishing1-3d2-mathml3-elements.xsd
|
661
661
|
- resources/crossref/JATS-journalpublishing1-3d2-mathml3.xsd
|
@@ -873,11 +873,13 @@ files:
|
|
873
873
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_with_organizational_author.yml
|
874
874
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_without_doi.yml
|
875
875
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/jekyll_post.yml
|
876
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/jekyll_post_with_anonymous_author.yml
|
876
877
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/substack_post_with_broken_reference.yml
|
877
878
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/syldavia_gazette_post_with_references.yml
|
878
879
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/upstream_post_with_references.yml
|
879
880
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/wordpress_post.yml
|
880
881
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/wordpress_post_with_references.yml
|
882
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_one_author/affiliation_is_space.yml
|
881
883
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_one_author/has_familyName.yml
|
882
884
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_one_author/has_name_in_display-order_with_ORCID.yml
|
883
885
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_one_author/name_with_affiliation_crossref.yml
|
@@ -917,6 +919,7 @@ files:
|
|
917
919
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/another_schema_org_from_front-matter.yml
|
918
920
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/journal_article.yml
|
919
921
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/journal_article_from_datacite.yml
|
922
|
+
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_rogue_scholar_with_anonymous_author.yml
|
920
923
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_rogue_scholar_with_doi.yml
|
921
924
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_rogue_scholar_with_organizational_author.yml
|
922
925
|
- spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_upstream_blog.yml
|