bolognese 0.6.6 → 0.7
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/README.md +33 -1
- data/lib/bolognese.rb +1 -0
- data/lib/bolognese/codemeta.rb +145 -0
- data/lib/bolognese/crossref.rb +1 -0
- data/lib/bolognese/datacite.rb +1 -0
- data/lib/bolognese/metadata.rb +18 -0
- data/lib/bolognese/schema_org.rb +5 -2
- data/lib/bolognese/version.rb +1 -1
- data/spec/codemeta_spec.rb +81 -0
- data/spec/datacite_spec.rb +16 -0
- data/spec/fixtures/codemeta.json +87 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/BlogPosting.yml +7 -329
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Dataset.yml +7 -1759
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Date.yml +7 -331
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Funding_schema_version_3.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Funding_schema_version_4.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Schema_org_JSON.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/is_identical_to.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/multiple_licenses.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_bibtex/BlogPosting.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_bibtex/Dataset.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_codemeta/SoftwareSourceCode.yml +133 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_datacite_xml_4_0/Dataset.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_datacite_xml_4_0/Funding.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_string/Dataset.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_alternate_identifiers/insert.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_contributors/none.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_creators/insert.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_dates/insert.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_descriptions/insert.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_identifier/doi.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_person/creator_only_name.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_publication_year/insert.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_publisher/insert.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_related_identifiers/insert.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_related_identifiers/rel_identifiers.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_resource_type/insert.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_rights_list/insert.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_subjects/insert.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_titles/insert.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_version/insert.yml +7 -7
- data/spec/schema_org_spec.rb +2 -2
- metadata +6 -9
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_contributors/insert.yml +0 -173
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_person/creator.yml +0 -173
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_person/creator_given_and_family_name.yml +0 -173
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_related_identifiers/get_related_identifier_type.yml +0 -173
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_related_identifiers/get_related_identifier_type_DOI.yml +0 -173
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_related_identifiers/get_related_identifier_type_URL.yml +0 -173
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/insert_titles/doi.yml +0 -173
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 510d880a02cea7933abd7de597f9a4061dad981b
|
4
|
+
data.tar.gz: 754fa0b49a23494efa1cac66c99688313bbaafca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9899dd154362fea725898b2895664704b1f6cdb7a981fd10225094b29273e467f45c45e545fd966ff06451df107c9625e906438172fac0fc44e55608e96165bb
|
7
|
+
data.tar.gz: ba1af6c6cdc58219234ea03e7a989a8eb464fee854fe581ad280465d942db5212113a99e65c23d876e6642c3345d79ff5bdb7ec82c94bbc9a8709acb594eb803
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -34,7 +34,7 @@ Bolognese reads and/or writes these metadata formats:
|
|
34
34
|
<td>application/vnd.datacite.datacite+xml</td>
|
35
35
|
<td>Yes</td>
|
36
36
|
<td>Yes</td>
|
37
|
-
|
37
|
+
</tr>
|
38
38
|
<tr>
|
39
39
|
<td><a href='http://schema.org/'>Schema.org in JSON-LD</a></td>
|
40
40
|
<td>schema_org</td>
|
@@ -42,6 +42,13 @@ Bolognese reads and/or writes these metadata formats:
|
|
42
42
|
<td>Yes</td>
|
43
43
|
<td>Yes</td>
|
44
44
|
</tr>
|
45
|
+
<tr>
|
46
|
+
<td><a href='https://codemeta.github.io/'>Codemeta</a></td>
|
47
|
+
<td>codemeta</td>
|
48
|
+
<td>application/ld+json</td>
|
49
|
+
<td>Yes</td>
|
50
|
+
<td>Yes</td>
|
51
|
+
</tr>
|
45
52
|
<tr>
|
46
53
|
<td><a href='http://en.wikipedia.org/wiki/BibTeX'>BibTeX</a></td>
|
47
54
|
<td>bibtex</td>
|
@@ -754,6 +761,31 @@ bolognese 10.5061/DRYAD.8515 -t datacite --schema_version http://datacite.org/sc
|
|
754
761
|
</resource>
|
755
762
|
```
|
756
763
|
|
764
|
+
|
765
|
+
Convert DataCite XML to Codemeta:
|
766
|
+
|
767
|
+
```
|
768
|
+
bolognese https://doi.org/10.5063/f1m61h5x -t codemeta
|
769
|
+
|
770
|
+
{
|
771
|
+
"@context":"https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld",
|
772
|
+
"@type":"SoftwareSourceCode",
|
773
|
+
"@id":"https://doi.org/10.5063/f1m61h5x",
|
774
|
+
"identifier":"https://doi.org/10.5063/f1m61h5x",
|
775
|
+
"title":"dataone: R interface to the DataONE network of data repositories",
|
776
|
+
"agents":{
|
777
|
+
"@type":"Person",
|
778
|
+
"givenName":"Matthew B.",
|
779
|
+
"familyName":"Jones"
|
780
|
+
},
|
781
|
+
"datePublished":"2016",
|
782
|
+
"publisher":{
|
783
|
+
"@type":"Organization",
|
784
|
+
"name":"KNB Data Repository"
|
785
|
+
}
|
786
|
+
}
|
787
|
+
```
|
788
|
+
|
757
789
|
Convert DataCite XML to BibTeX:
|
758
790
|
|
759
791
|
```
|
data/lib/bolognese.rb
CHANGED
@@ -0,0 +1,145 @@
|
|
1
|
+
module Bolognese
|
2
|
+
class Codemeta < Metadata
|
3
|
+
|
4
|
+
def initialize(id: nil, string: nil)
|
5
|
+
id = normalize_id(id) if id.present?
|
6
|
+
|
7
|
+
if string.present?
|
8
|
+
@raw = string
|
9
|
+
elsif id.present?
|
10
|
+
response = Maremma.get(id, accept: "application/ld+json", raw: true)
|
11
|
+
@raw = response.body.fetch("data", nil)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
alias_method :schema_org, :as_schema_org
|
16
|
+
alias_method :bibtex, :as_bibtex
|
17
|
+
|
18
|
+
def metadata
|
19
|
+
@metadata ||= raw.present? ? Maremma.from_json(raw) : {}
|
20
|
+
end
|
21
|
+
|
22
|
+
def exists?
|
23
|
+
metadata.present?
|
24
|
+
end
|
25
|
+
|
26
|
+
def doi
|
27
|
+
doi_from_url(id)
|
28
|
+
end
|
29
|
+
|
30
|
+
def id
|
31
|
+
normalize_id(metadata.fetch("@id", nil) || identifier)
|
32
|
+
end
|
33
|
+
|
34
|
+
def identifier
|
35
|
+
metadata.fetch("identifier", nil)
|
36
|
+
end
|
37
|
+
|
38
|
+
def url
|
39
|
+
normalize_id(metadata.fetch("codeRepository", nil))
|
40
|
+
end
|
41
|
+
|
42
|
+
def resource_type_general
|
43
|
+
SO_TO_DC_TRANSLATIONS[type]
|
44
|
+
end
|
45
|
+
|
46
|
+
def type
|
47
|
+
metadata.fetch("@type", nil)
|
48
|
+
end
|
49
|
+
|
50
|
+
def additional_type
|
51
|
+
metadata.fetch("additionalType", nil)
|
52
|
+
end
|
53
|
+
|
54
|
+
def bibtex_type
|
55
|
+
Bolognese::Bibtex::SO_TO_BIB_TRANSLATIONS[type] || "misc"
|
56
|
+
end
|
57
|
+
|
58
|
+
def name
|
59
|
+
metadata.fetch("title", nil)
|
60
|
+
end
|
61
|
+
|
62
|
+
def alternate_name
|
63
|
+
metadata.fetch("alternateName", nil)
|
64
|
+
end
|
65
|
+
|
66
|
+
def author
|
67
|
+
a = Array.wrap(metadata.fetch("agents", nil)).map { |a| a.extract!("@type", "@id", "name") }
|
68
|
+
array_unwrap(a)
|
69
|
+
end
|
70
|
+
|
71
|
+
def editor
|
72
|
+
Array(metadata.fetch("editor", nil)).map { |a| a.except("name") }.presence
|
73
|
+
end
|
74
|
+
|
75
|
+
def description
|
76
|
+
metadata.fetch("description", nil)
|
77
|
+
end
|
78
|
+
|
79
|
+
def license
|
80
|
+
metadata.fetch("license", nil)
|
81
|
+
end
|
82
|
+
|
83
|
+
def version
|
84
|
+
metadata.fetch("version", nil)
|
85
|
+
end
|
86
|
+
|
87
|
+
def keywords
|
88
|
+
Array(metadata.fetch("tags", nil)).join(", ").presence
|
89
|
+
end
|
90
|
+
|
91
|
+
def date_created
|
92
|
+
metadata.fetch("dateCreated", nil)
|
93
|
+
end
|
94
|
+
|
95
|
+
def date_published
|
96
|
+
metadata.fetch("datePublished", nil)
|
97
|
+
end
|
98
|
+
|
99
|
+
def date_modified
|
100
|
+
metadata.fetch("dateModified", nil)
|
101
|
+
end
|
102
|
+
|
103
|
+
def related_identifiers(relation_type)
|
104
|
+
normalize_ids(metadata.fetch(relation_type, nil))
|
105
|
+
end
|
106
|
+
|
107
|
+
def same_as
|
108
|
+
related_identifiers("isIdenticalTo")
|
109
|
+
end
|
110
|
+
|
111
|
+
def is_part_of
|
112
|
+
related_identifiers("isPartOf")
|
113
|
+
end
|
114
|
+
|
115
|
+
def has_part
|
116
|
+
related_identifiers("hasPart")
|
117
|
+
end
|
118
|
+
|
119
|
+
def citation
|
120
|
+
related_identifiers("citation")
|
121
|
+
end
|
122
|
+
|
123
|
+
def publisher
|
124
|
+
p = metadata.fetch("publisher", nil)
|
125
|
+
if p.is_a?(Hash)
|
126
|
+
p
|
127
|
+
elsif p.is_a?(String)
|
128
|
+
{ "@type" => "Organization",
|
129
|
+
"name" => p }
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def container_title
|
134
|
+
if publisher.is_a?(Hash)
|
135
|
+
publisher.fetch("name", nil)
|
136
|
+
elsif publisher.is_a?(String)
|
137
|
+
publisher
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def provider
|
142
|
+
metadata.fetch("provider", nil)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
data/lib/bolognese/crossref.rb
CHANGED
data/lib/bolognese/datacite.rb
CHANGED
data/lib/bolognese/metadata.rb
CHANGED
@@ -72,6 +72,24 @@ module Bolognese
|
|
72
72
|
}.compact.to_json
|
73
73
|
end
|
74
74
|
|
75
|
+
def as_codemeta
|
76
|
+
{ "@context" => id.present? ? "https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld" : nil,
|
77
|
+
"@type" => type,
|
78
|
+
"@id" => id,
|
79
|
+
"identifier" => id,
|
80
|
+
"codeRepository" => url,
|
81
|
+
"title" => name,
|
82
|
+
"agents" => author,
|
83
|
+
"description" => description,
|
84
|
+
"version" => version,
|
85
|
+
"tags" => keywords.to_s.split(", ").presence,
|
86
|
+
"dateCreated" => date_created,
|
87
|
+
"datePublished" => date_published,
|
88
|
+
"dateModified" => date_modified,
|
89
|
+
"publisher" => publisher
|
90
|
+
}.compact.to_json
|
91
|
+
end
|
92
|
+
|
75
93
|
def as_bibtex
|
76
94
|
bib = {
|
77
95
|
bibtex_type: bibtex_type.to_sym,
|
data/lib/bolognese/schema_org.rb
CHANGED
@@ -14,6 +14,7 @@ module Bolognese
|
|
14
14
|
end
|
15
15
|
|
16
16
|
alias_method :schema_org, :as_schema_org
|
17
|
+
alias_method :codemeta, :as_codemeta
|
17
18
|
alias_method :bibtex, :as_bibtex
|
18
19
|
|
19
20
|
def metadata
|
@@ -61,11 +62,13 @@ module Bolognese
|
|
61
62
|
end
|
62
63
|
|
63
64
|
def author
|
64
|
-
Array(metadata.fetch("author", nil)).map { |a| a.except("name") }
|
65
|
+
a = Array.wrap(metadata.fetch("author", nil)).map { |a| a.except("name") }
|
66
|
+
array_unwrap(a)
|
65
67
|
end
|
66
68
|
|
67
69
|
def editor
|
68
|
-
Array(metadata.fetch("editor", nil)).map { |a| a.except("name") }
|
70
|
+
a = Array.wrap(metadata.fetch("editor", nil)).map { |a| a.except("name") }
|
71
|
+
array_unwrap(a)
|
69
72
|
end
|
70
73
|
|
71
74
|
def description
|
data/lib/bolognese/version.rb
CHANGED
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Bolognese::Codemeta, vcr: true do
|
4
|
+
# let(:id) { "https://blog.datacite.org/eating-your-own-dog-food" }
|
5
|
+
let(:fixture_path) { "spec/fixtures/" }
|
6
|
+
#
|
7
|
+
# subject { Bolognese::SchemaOrg.new(id: id) }
|
8
|
+
|
9
|
+
# context "get metadata" do
|
10
|
+
# it "BlogPosting" do
|
11
|
+
# expect(subject.id).to eq("https://doi.org/10.5438/4k3m-nyvg")
|
12
|
+
# expect(subject.url).to eq("https://blog.datacite.org/eating-your-own-dog-food")
|
13
|
+
# expect(subject.type).to eq("BlogPosting")
|
14
|
+
# expect(subject.author).to eq([{"@type"=>"Person", "@id"=>"http://orcid.org/0000-0003-1419-2405", "givenName"=>"Martin", "familyName"=>"Fenner"}])
|
15
|
+
# expect(subject.name).to eq("Eating your own Dog Food")
|
16
|
+
# expect(subject.alternate_name).to eq("MS-49-3632-5083")
|
17
|
+
# expect(subject.description).to start_with("Eating your own dog food")
|
18
|
+
# expect(subject.keywords).to eq("datacite, doi, metadata, featured")
|
19
|
+
# expect(subject.date_published).to eq("2016-12-20")
|
20
|
+
# expect(subject.date_modified).to eq("2016-12-20")
|
21
|
+
# expect(subject.is_part_of).to eq("@type"=>"Blog", "@id"=>"https://doi.org/10.5438/0000-00ss", "name"=>"DataCite Blog")
|
22
|
+
# expect(subject.citation).to eq([{"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5438/0012"},
|
23
|
+
# {"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5438/55e5-t5c0"}])
|
24
|
+
# expect(subject.publisher).to eq("@type"=>"Organization", "name"=>"DataCite")
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# it "BlogPosting schema.org JSON" do
|
28
|
+
# json = JSON.parse(subject.as_schema_org)
|
29
|
+
# expect(json["@id"]).to eq("https://doi.org/10.5438/4k3m-nyvg")
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
# it "not found error" do
|
33
|
+
# id = "https://doi.org/10.5438/4K3M-NYVGx"
|
34
|
+
# subject = Bolognese::SchemaOrg.new(id: id)
|
35
|
+
# expect(subject.id).to be_nil
|
36
|
+
# expect(subject.exists?).to be false
|
37
|
+
# end
|
38
|
+
# end
|
39
|
+
|
40
|
+
context "get metadata as string" do
|
41
|
+
let(:string) { IO.read(fixture_path + 'codemeta.json') }
|
42
|
+
|
43
|
+
subject { Bolognese::Codemeta.new(string: string) }
|
44
|
+
|
45
|
+
it "SoftwareSourceCode" do
|
46
|
+
expect(subject.id).to eq("https://doi.org/10.5063/f1m61h5x")
|
47
|
+
expect(subject.url).to eq("https://github.com/DataONEorg/rdataone")
|
48
|
+
expect(subject.type).to eq("SoftwareSourceCode")
|
49
|
+
expect(subject.author).to eq([{"@type"=>"person",
|
50
|
+
"@id"=>"http://orcid.org/0000-0003-0077-4738",
|
51
|
+
"name"=>"Matt Jones"},
|
52
|
+
{"@type"=>"person",
|
53
|
+
"@id"=>"http://orcid.org/0000-0002-2192-403X",
|
54
|
+
"name"=>"Peter Slaughter"},
|
55
|
+
{"@type"=>"organization",
|
56
|
+
"@id"=>"http://orcid.org/0000-0002-3957-2474",
|
57
|
+
"name"=>"University of California, Santa Barbara"}])
|
58
|
+
expect(subject.name).to eq("R Interface to the DataONE REST API")
|
59
|
+
expect(subject.description).to start_with("Provides read and write access to data and metadata")
|
60
|
+
expect(subject.keywords).to eq("data sharing, data repository, DataONE")
|
61
|
+
expect(subject.version).to eq("2.0.0")
|
62
|
+
expect(subject.date_created).to eq("2016-05-27")
|
63
|
+
expect(subject.date_published).to eq("2016-05-27")
|
64
|
+
expect(subject.date_modified).to eq("2016-05-27")
|
65
|
+
expect(subject.publisher).to eq("@type"=>"Organization", "name"=>"https://cran.r-project.org")
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "get metadata as datacite xml" do
|
70
|
+
let(:string) { IO.read(fixture_path + 'codemeta.json') }
|
71
|
+
|
72
|
+
subject { Bolognese::Codemeta.new(string: string) }
|
73
|
+
|
74
|
+
it "SoftwareSourceCode" do
|
75
|
+
expect(subject.validation_errors).to be_empty
|
76
|
+
datacite = Maremma.from_xml(subject.as_datacite).fetch("resource", {})
|
77
|
+
expect(datacite.dig("titles", "title")).to eq("R Interface to the DataONE REST API")
|
78
|
+
expect(datacite.fetch("version")).to eq("2.0.0")
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
data/spec/datacite_spec.rb
CHANGED
@@ -227,6 +227,22 @@ describe Bolognese::Datacite, vcr: true do
|
|
227
227
|
end
|
228
228
|
end
|
229
229
|
|
230
|
+
context "get metadata as codemeta" do
|
231
|
+
it "SoftwareSourceCode" do
|
232
|
+
id = "https://doi.org/10.5063/f1m61h5x"
|
233
|
+
subject = Bolognese::Datacite.new(id: id)
|
234
|
+
json = JSON.parse(subject.as_codemeta)
|
235
|
+
expect(json["@context"]).to eq("https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld")
|
236
|
+
expect(json["@id"]).to eq("https://doi.org/10.5063/f1m61h5x")
|
237
|
+
expect(json["@type"]).to eq("SoftwareSourceCode")
|
238
|
+
expect(json["identifier"]).to eq("https://doi.org/10.5063/f1m61h5x")
|
239
|
+
expect(json["agents"]).to eq("@type"=>"Person", "givenName"=>"Matthew B.", "familyName"=>"Jones")
|
240
|
+
expect(json["title"]).to eq("dataone: R interface to the DataONE network of data repositories")
|
241
|
+
expect(json["datePublished"]).to eq("2016")
|
242
|
+
expect(json["publisher"]).to eq("@type"=>"Organization", "name"=>"KNB Data Repository")
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
230
246
|
context "get metadata as bibtex" do
|
231
247
|
it "Dataset" do
|
232
248
|
bibtex = BibTeX.parse(subject.as_bibtex).to_a(quotes: '').first
|
@@ -0,0 +1,87 @@
|
|
1
|
+
{
|
2
|
+
"@context": "https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld",
|
3
|
+
"@type": "SoftwareSourceCode",
|
4
|
+
"agents": [{
|
5
|
+
"@id": "http://orcid.org/0000-0003-0077-4738",
|
6
|
+
"@type": "person",
|
7
|
+
"email": "jones@nceas.ucsb.edu",
|
8
|
+
"name": "Matt Jones",
|
9
|
+
"affiliation": "NCEAS",
|
10
|
+
"mustBeCited": true,
|
11
|
+
"isMaintainer": true,
|
12
|
+
"isRightsHolder": true,
|
13
|
+
"role": {
|
14
|
+
"namespace": "http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode",
|
15
|
+
"roleCode": [
|
16
|
+
"originator",
|
17
|
+
"resourceProvider"
|
18
|
+
]
|
19
|
+
}
|
20
|
+
}, {
|
21
|
+
"@id": "http://orcid.org/0000-0002-2192-403X",
|
22
|
+
"@type": "person",
|
23
|
+
"email": "slaughter@nceas.ucsb.edu",
|
24
|
+
"name": "Peter Slaughter",
|
25
|
+
"affiliation": "NCEAS",
|
26
|
+
"mustBeCited": true,
|
27
|
+
"isMaintainer": false,
|
28
|
+
"isRightsHolder": false,
|
29
|
+
"role": {
|
30
|
+
"namespace": "http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode",
|
31
|
+
"roleCode": "contributor"
|
32
|
+
}
|
33
|
+
}, {
|
34
|
+
"@id": "http://orcid.org/0000-0002-3957-2474",
|
35
|
+
"@type": "organization",
|
36
|
+
"email": "info@ucop.edu",
|
37
|
+
"name": "University of California, Santa Barbara",
|
38
|
+
"role": {
|
39
|
+
"namespace": "http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode",
|
40
|
+
"roleCode": "copyrightHolder"
|
41
|
+
}
|
42
|
+
}],
|
43
|
+
"depends": {
|
44
|
+
"@type": "URL",
|
45
|
+
"@value": "https://github.com/ropensci/datapack"
|
46
|
+
},
|
47
|
+
"identifier": "http://dx.doi.org/10.5063/F1M61H5X",
|
48
|
+
"codeRepository": "https://github.com/DataONEorg/rdataone",
|
49
|
+
"controlledTem": "software",
|
50
|
+
"datePublished": "2016-05-27",
|
51
|
+
"dateModified": "2016-05-27",
|
52
|
+
"dateCreated": "2016-05-27",
|
53
|
+
"description": "Provides read and write access to data and metadata from the DataONE network of data repositories.Each DataONE repository implements a consistent repository application programming interface. Users call methods in R to access these remote repository functions, such as methods to query the metadata catalog, get access to metadata for particular data packages, and read the data objects from the data repository.Users can also insert and update data objects on repositories that support these methods.",
|
54
|
+
"downloadLink": "https://cran.r-project.org/src/contrib/dataone_2.0.0.tar.gz",
|
55
|
+
"funding": "National Science Foundation grant #012345678",
|
56
|
+
"isAutomatedBuild": false,
|
57
|
+
"issueTracker": "https://github.com/DataONEorg/rdataone/issues",
|
58
|
+
"licenseId": "Apache-2.0",
|
59
|
+
"publisher": "https://cran.r-project.org",
|
60
|
+
"tags": [
|
61
|
+
"data sharing",
|
62
|
+
"data repository",
|
63
|
+
"DataONE"
|
64
|
+
],
|
65
|
+
"title": "R Interface to the DataONE REST API",
|
66
|
+
"version": "2.0.0",
|
67
|
+
"uploadedBy": {
|
68
|
+
"@id": "http://orcid.org/0000-0003-0077-4738",
|
69
|
+
"@type": "person",
|
70
|
+
"email": "mbjones@nceas.ucsb.edu",
|
71
|
+
"name": "Matt Jones"
|
72
|
+
},
|
73
|
+
"programmingLanguage": {
|
74
|
+
"name": "R",
|
75
|
+
"version": "> 3.1.1",
|
76
|
+
"URL": "https://www.r-project.org"
|
77
|
+
},
|
78
|
+
"readme": "https://github.com/DataONEorg/rdataone/README.md",
|
79
|
+
"relatedPublications": "ISBN:0201703726",
|
80
|
+
"relationship": {
|
81
|
+
"relationshipType": "isPartOf",
|
82
|
+
"relatedIdentifier": "urn:uuid:F1A0A7AF-ECF3-4C7D-B675-7C6949963995",
|
83
|
+
"relatedIdentifierType": "UUID"
|
84
|
+
},
|
85
|
+
"softwarePaperCitationIdentifiers": "http://doi.org/0000/0000",
|
86
|
+
"zippedCode": "https://cran.r-project.org/src/contrib/dataone_2.0.0.tar.gz"
|
87
|
+
}
|