cirneco 0.8.6 → 0.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +0 -3
- data/Gemfile.lock +3 -3
- data/lib/cirneco/doi.rb +9 -21
- data/lib/cirneco/utils.rb +55 -25
- data/lib/cirneco/version.rb +1 -1
- data/spec/api_spec.rb +1 -1
- data/spec/doi_spec.rb +8 -7
- data/spec/fixtures/index-minted.html +271 -0
- data/spec/fixtures/index.html +1 -1
- data/spec/fixtures/index.html.erb +42 -0
- data/spec/fixtures/vcr_cassettes/Cirneco_DataCenter/get/should_get_all_dois_by_prefix.yml +14 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_DataCenter/mint_and_hide_DOIs/should_hide_for_all_urls.yml +42 -7
- data/spec/fixtures/vcr_cassettes/Cirneco_DataCenter/mint_and_hide_DOIs/should_hide_for_url.yml +2 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_DataCenter/mint_and_hide_DOIs/should_hide_metadata_for_work.yml +2 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_DataCenter/mint_and_hide_DOIs/should_mint_and_hide_for_all_urls.yml +142 -4
- data/spec/fixtures/vcr_cassettes/Cirneco_DataCenter/mint_and_hide_DOIs/should_mint_and_hide_for_url.yml +4 -4
- data/spec/fixtures/vcr_cassettes/Cirneco_DataCenter/mint_and_hide_DOIs/should_mint_for_all_urls.yml +142 -4
- data/spec/fixtures/vcr_cassettes/Cirneco_DataCenter/mint_and_hide_DOIs/should_mint_for_url.yml +4 -4
- data/spec/fixtures/vcr_cassettes/Cirneco_DataCenter/mint_and_hide_DOIs/should_post_metadata_for_work.yml +4 -4
- data/spec/fixtures/vcr_cassettes/Cirneco_Doi/MDS_DOI_API/get/should_get_all_dois.yml +14 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_Doi/MDS_DOI_API/get/should_get_doi.yml +2 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_Doi/MDS_DOI_API/put/should_put_doi.yml +2 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_Doi/mint_and_hide_DOIs/hides_a_doi.yml +2 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_Doi/mint_and_hide_DOIs/mints_a_doi.yml +4 -4
- data/spec/fixtures/vcr_cassettes/Cirneco_Doi/mint_and_hide_DOIs/mints_and_hides_a_doi.yml +4 -4
- data/spec/fixtures/vcr_cassettes/Cirneco_Doi/mint_and_hide_DOIs/mints_and_hides_dois_for_list_of_urls.yml +142 -4
- data/spec/fixtures/vcr_cassettes/Cirneco_Doi/mint_and_hide_DOIs/mints_dois_for_list_of_urls.yml +142 -4
- data/spec/fixtures/vcr_cassettes/Cirneco_Work/DOI_API/get/should_get_all_dois.yml +14 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_Work/DOI_API/get/should_get_doi.yml +2 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_Work/DOI_API/put/should_put_doi.yml +2 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_Work/Media_API/get/should_get_media.yml +2 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_Work/Media_API/post/should_post_media.yml +2 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_Work/Metadata_API/delete/should_delete_metadata.yml +2 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_Work/Metadata_API/get/should_get_metadata.yml +2 -2
- data/spec/fixtures/vcr_cassettes/Cirneco_Work/Metadata_API/post/should_post_metadata.yml +2 -2
- data/spec/utils_spec.rb +63 -13
- metadata +4 -3
- data/spec/fixtures/vcr_cassettes/Cirneco_Doi/mint_and_hide_DOIs/hides_dois_for_list_of_urls.yml +0 -44
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f31aa95c4a43e1374ff505a52fe6a812576f4b6e
|
|
4
|
+
data.tar.gz: 7ec6ab0d1ade494caf4e5844d1c6e3dcb033ea44
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4c02aabc718588da40567d5d7bf8a290e956e8ea2cc580e42aa7fbc93d8b5cf5c59f2b172ebae941a53f4dfcde3e49882704c236e180f5b8fbaaaa68523ecdad
|
|
7
|
+
data.tar.gz: 13362e8c0cc37c13725aa173bbc05ee83a68e05b63238b6b63557fd80ef7d77b5351c7b94f1dbfd19d2ee37a65d0d963ada43139d7d409faaa08b20ee33e2a3f
|
data/.travis.yml
CHANGED
|
@@ -6,9 +6,6 @@ before_install:
|
|
|
6
6
|
- wget https://github.com/jgm/pandoc/releases/download/1.15.2/pandoc-1.15.2-1-amd64.deb
|
|
7
7
|
- sudo dpkg -i pandoc-1.15.2-1-amd64.deb
|
|
8
8
|
- rm pandoc-1.15.2-1-amd64.deb
|
|
9
|
-
- sudo add-apt-repository ppa:kalakris/cmake -y
|
|
10
|
-
- sudo apt-get update -q
|
|
11
|
-
- sudo apt-get install cmake -y
|
|
12
9
|
|
|
13
10
|
install:
|
|
14
11
|
- travis_retry bundle install
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
cirneco (0.8.
|
|
4
|
+
cirneco (0.8.7)
|
|
5
5
|
activesupport (~> 4.2, >= 4.2.5)
|
|
6
6
|
base32-crockford-checksum (~> 0.2.2)
|
|
7
7
|
bergamasco (~> 0.3)
|
|
@@ -52,7 +52,7 @@ GEM
|
|
|
52
52
|
json (1.8.3)
|
|
53
53
|
loofah (2.0.3)
|
|
54
54
|
nokogiri (>= 1.5.9)
|
|
55
|
-
maremma (3.1)
|
|
55
|
+
maremma (3.1.1)
|
|
56
56
|
activesupport (~> 4.2, >= 4.2.5)
|
|
57
57
|
builder (~> 3.2, >= 3.2.2)
|
|
58
58
|
excon (~> 0.45.0)
|
|
@@ -122,4 +122,4 @@ DEPENDENCIES
|
|
|
122
122
|
webmock (~> 1.22, >= 1.22.3)
|
|
123
123
|
|
|
124
124
|
BUNDLED WITH
|
|
125
|
-
1.
|
|
125
|
+
1.13.6
|
data/lib/cirneco/doi.rb
CHANGED
|
@@ -105,6 +105,8 @@ module Cirneco
|
|
|
105
105
|
method_option :sitepath, :default => ENV['SITE_SITEPATH']
|
|
106
106
|
method_option :authorpath, :default => ENV['SITE_AUTHORPATH']
|
|
107
107
|
method_option :referencespath, :default => ENV['SITE_REFERENCESPATH']
|
|
108
|
+
method_option :source_dir
|
|
109
|
+
method_option :index_dir
|
|
108
110
|
method_option :csl, :default => ENV['SITE_CSLPATH']
|
|
109
111
|
method_option :number, :aliases => '-n'
|
|
110
112
|
method_option :username, :default => ENV['MDS_USERNAME']
|
|
@@ -112,13 +114,7 @@ module Cirneco
|
|
|
112
114
|
method_option :prefix, :default => ENV['PREFIX']
|
|
113
115
|
method_option :sandbox, :type => :boolean, :force => false
|
|
114
116
|
def mint(url)
|
|
115
|
-
|
|
116
|
-
if url.is_a?(Array)
|
|
117
|
-
response = mint_dois_for_all_urls(url, options)
|
|
118
|
-
else
|
|
119
|
-
response = mint_doi_for_url(url, options)
|
|
120
|
-
end
|
|
121
|
-
|
|
117
|
+
response = mint_dois_for_all_urls(url, options)
|
|
122
118
|
puts response
|
|
123
119
|
end
|
|
124
120
|
|
|
@@ -126,6 +122,8 @@ module Cirneco
|
|
|
126
122
|
method_option :sitepath, :default => ENV['SITE_SITEPATH']
|
|
127
123
|
method_option :authorpath, :default => ENV['SITE_AUTHORPATH']
|
|
128
124
|
method_option :referencespath, :default => ENV['SITE_REFERENCESPATH']
|
|
125
|
+
method_option :source_dir
|
|
126
|
+
method_option :index_dir
|
|
129
127
|
method_option :csl, :default => ENV['SITE_CSLPATH']
|
|
130
128
|
method_option :number, :aliases => '-n'
|
|
131
129
|
method_option :username, :default => ENV['MDS_USERNAME']
|
|
@@ -133,13 +131,7 @@ module Cirneco
|
|
|
133
131
|
method_option :prefix, :default => ENV['PREFIX']
|
|
134
132
|
method_option :sandbox, :type => :boolean, :force => false
|
|
135
133
|
def mint_and_hide(url)
|
|
136
|
-
|
|
137
|
-
if url.is_a?(Array)
|
|
138
|
-
response = mint_and_hide_dois_for_all_urls(url, options)
|
|
139
|
-
else
|
|
140
|
-
response = mint_and_hide_doi_for_url(url, options)
|
|
141
|
-
end
|
|
142
|
-
|
|
134
|
+
response = mint_and_hide_dois_for_all_urls(url, options)
|
|
143
135
|
puts response
|
|
144
136
|
end
|
|
145
137
|
|
|
@@ -147,19 +139,15 @@ module Cirneco
|
|
|
147
139
|
method_option :sitepath, :default => ENV['SITE_SITEPATH']
|
|
148
140
|
method_option :authorpath, :default => ENV['SITE_AUTHORPATH']
|
|
149
141
|
method_option :referencespath, :default => ENV['SITE_REFERENCESPATH']
|
|
142
|
+
method_option :source_dir
|
|
143
|
+
method_option :index_dir
|
|
150
144
|
method_option :csl, :default => ENV['SITE_CSLPATH']
|
|
151
145
|
method_option :bibliography, :default => ENV['SITE_REFERENCESPATH']
|
|
152
146
|
method_option :username, :default => ENV['MDS_USERNAME']
|
|
153
147
|
method_option :password, :default => ENV['MDS_PASSWORD']
|
|
154
148
|
method_option :sandbox, :type => :boolean, :force => false
|
|
155
149
|
def hide(url)
|
|
156
|
-
|
|
157
|
-
if url.is_a?(Array)
|
|
158
|
-
response = hide_dois_for_all_urls(url, options)
|
|
159
|
-
else
|
|
160
|
-
response = hide_doi_for_url(url, options)
|
|
161
|
-
end
|
|
162
|
-
|
|
150
|
+
response = hide_dois_for_all_urls(url, options)
|
|
163
151
|
puts response
|
|
164
152
|
end
|
|
165
153
|
end
|
data/lib/cirneco/utils.rb
CHANGED
|
@@ -103,68 +103,66 @@ module Cirneco
|
|
|
103
103
|
|
|
104
104
|
# fetch schema.org metadata in JSON-LD format to mint DOI
|
|
105
105
|
def mint_doi_for_url(url, options={})
|
|
106
|
-
filename =
|
|
107
|
-
source_path = options[:source_path] || "/"
|
|
108
|
-
filepath = Dir.pwd + source_path + filename + ".md"
|
|
106
|
+
filename, build_path, source_path = filepath_from_url(url, options)
|
|
109
107
|
|
|
110
|
-
metadata = generate_metadata_for_work(
|
|
108
|
+
metadata = generate_metadata_for_work(build_path, options)
|
|
111
109
|
return "DOI #{metadata["doi"]} not changed for #{filename}" if metadata["doi"] && metadata["date_issued"]
|
|
112
110
|
|
|
113
111
|
response = post_metadata_for_work(metadata, options)
|
|
114
112
|
return "Errors for DOI #{metadata["doi"]}: #{response.body['errors'].first['title']}\n" if response.body['errors']
|
|
115
113
|
|
|
116
|
-
new_metadata = Bergamasco::Markdown.update_file(
|
|
114
|
+
new_metadata = Bergamasco::Markdown.update_file(source_path, "doi" => metadata["doi"], "published" => true)
|
|
117
115
|
"DOI #{new_metadata["doi"]} minted for #{filename}"
|
|
118
116
|
end
|
|
119
117
|
|
|
120
118
|
# fetch schema.org metadata in JSON-LD format to mint DOI
|
|
121
119
|
def mint_and_hide_doi_for_url(url, options={})
|
|
122
|
-
filename =
|
|
123
|
-
source_path = options[:source_path] || "/"
|
|
124
|
-
filepath = Dir.pwd + source_path + filename + ".md"
|
|
120
|
+
filename, build_path, source_path = filepath_from_url(url, options)
|
|
125
121
|
|
|
126
|
-
metadata = generate_metadata_for_work(
|
|
122
|
+
metadata = generate_metadata_for_work(build_path, options)
|
|
127
123
|
return "DOI #{metadata["doi"]} not changed for #{filename}" if metadata["doi"] && metadata["date_issued"]
|
|
128
124
|
|
|
129
125
|
response = post_metadata_for_work(metadata, options)
|
|
130
126
|
return "Errors for DOI #{metadata["doi"]}: #{response.body['errors'].first['title']}\n" if response.body['errors']
|
|
131
127
|
|
|
132
|
-
new_metadata = Bergamasco::Markdown.update_file(
|
|
128
|
+
new_metadata = Bergamasco::Markdown.update_file(source_path, "doi" => metadata["doi"], "published" => false)
|
|
133
129
|
"DOI #{new_metadata["doi"]} minted and hidden for #{filename}"
|
|
134
130
|
end
|
|
135
131
|
|
|
136
132
|
# fetch schema.org metadata in JSON-LD format to mint DOI
|
|
137
133
|
# DOIs are never deleted, but we can remove the metadata from the DataCite index
|
|
138
134
|
def hide_doi_for_url(url, options={})
|
|
139
|
-
filename =
|
|
140
|
-
source_path = options[:source_path] || "/"
|
|
141
|
-
filepath = Dir.pwd + source_path + filename + ".md"
|
|
135
|
+
filename, build_path, source_path = filepath_from_url(url, options)
|
|
142
136
|
|
|
143
|
-
metadata = generate_metadata_for_work(
|
|
144
|
-
return "DOI
|
|
137
|
+
metadata = generate_metadata_for_work(build_path, options)
|
|
138
|
+
return "No DOI for #{filename}" unless metadata["doi"]
|
|
139
|
+
return "DOI #{metadata["doi"]} not active for #{filename}" unless metadata["date_issued"]
|
|
145
140
|
|
|
146
141
|
response = hide_metadata_for_work(metadata, options)
|
|
147
142
|
return "Errors for DOI #{metadata["doi"]}: #{response.body['errors'].first['title']}\n" if response.body['errors']
|
|
148
143
|
|
|
149
|
-
new_metadata = Bergamasco::Markdown.update_file(
|
|
144
|
+
new_metadata = Bergamasco::Markdown.update_file(source_path, "published" => false)
|
|
150
145
|
"DOI #{metadata["doi"]} hidden for #{filename}"
|
|
151
146
|
end
|
|
152
147
|
|
|
153
|
-
def mint_dois_for_all_urls(
|
|
154
|
-
urls
|
|
155
|
-
|
|
148
|
+
def mint_dois_for_all_urls(url, options={})
|
|
149
|
+
urls = get_urls_for_works(url)
|
|
150
|
+
urls.map do |u|
|
|
151
|
+
mint_doi_for_url(u, options)
|
|
156
152
|
end.join("\n")
|
|
157
153
|
end
|
|
158
154
|
|
|
159
|
-
def mint_and_hide_dois_for_all_urls(
|
|
160
|
-
urls
|
|
161
|
-
|
|
155
|
+
def mint_and_hide_dois_for_all_urls(url, options={})
|
|
156
|
+
urls = get_urls_for_works(url)
|
|
157
|
+
urls.map do |u|
|
|
158
|
+
mint_and_hide_doi_for_url(u, options)
|
|
162
159
|
end.join("\n")
|
|
163
160
|
end
|
|
164
161
|
|
|
165
|
-
def hide_dois_for_all_urls(
|
|
166
|
-
urls
|
|
167
|
-
|
|
162
|
+
def hide_dois_for_all_urls(url, options={})
|
|
163
|
+
urls = get_urls_for_works(url)
|
|
164
|
+
urls.map do |u|
|
|
165
|
+
hide_doi_for_url(u, options)
|
|
168
166
|
end.join("\n")
|
|
169
167
|
end
|
|
170
168
|
|
|
@@ -331,6 +329,38 @@ module Cirneco
|
|
|
331
329
|
end.select { |t| t[:related_identifier_type].present? }
|
|
332
330
|
end
|
|
333
331
|
|
|
332
|
+
def filepath_from_url(url, options={})
|
|
333
|
+
if doi_from_url(url)
|
|
334
|
+
response = Maremma.head(url, limit: 0)
|
|
335
|
+
url = response.headers.fetch("Location", "")
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
uri = Addressable::URI.parse(url.gsub(/\/$/, ""))
|
|
339
|
+
filename = (File.basename(uri.path, ".html").presence || "index") + ".html"
|
|
340
|
+
|
|
341
|
+
if filename == "index.html"
|
|
342
|
+
index_dir = options[:index_dir].presence || "/"
|
|
343
|
+
build_path = Dir.pwd + index_dir + filename
|
|
344
|
+
source_path = build_path + ".erb"
|
|
345
|
+
else
|
|
346
|
+
source_dir = options[:source_dir].presence || "/"
|
|
347
|
+
build_path = Dir.pwd + source_dir + filename
|
|
348
|
+
source_path = build_path + ".md"
|
|
349
|
+
end
|
|
350
|
+
[filename, build_path, source_path]
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
def doi_from_url(url)
|
|
354
|
+
return nil unless url.present?
|
|
355
|
+
|
|
356
|
+
if /(http|https):\/\/(dx\.)?doi\.org\/(\w+)/.match(url)
|
|
357
|
+
uri = Addressable::URI.parse(url)
|
|
358
|
+
uri.path[1..-1].upcase
|
|
359
|
+
elsif url.starts_with?("doi:")
|
|
360
|
+
url[4..-1].upcase
|
|
361
|
+
end
|
|
362
|
+
end
|
|
363
|
+
|
|
334
364
|
def orcid_from_url(url)
|
|
335
365
|
return nil unless url.present?
|
|
336
366
|
|
data/lib/cirneco/version.rb
CHANGED
data/spec/api_spec.rb
CHANGED
|
@@ -66,7 +66,7 @@ describe Cirneco::Work, vcr: true, :order => :defined do
|
|
|
66
66
|
it 'should get all dois' do
|
|
67
67
|
response = subject.get_dois(options)
|
|
68
68
|
dois = response.body["data"]
|
|
69
|
-
expect(dois.length).to eq(
|
|
69
|
+
expect(dois.length).to eq(516)
|
|
70
70
|
expect(dois.first).to eq("10.23725/0000-03VC")
|
|
71
71
|
end
|
|
72
72
|
|
data/spec/doi_spec.rb
CHANGED
|
@@ -17,7 +17,7 @@ describe Cirneco::Doi do
|
|
|
17
17
|
let(:csl) { "spec/fixtures/apa.csl" }
|
|
18
18
|
let(:bibliography) { "spec/fixtures/bibliography.yaml" }
|
|
19
19
|
let(:api_options) { { username: username, password: password, sandbox: true } }
|
|
20
|
-
let(:mint_options) { { username: username, password: password, sandbox: true,
|
|
20
|
+
let(:mint_options) { { username: username, password: password, sandbox: true, source_dir: "/spec/fixtures/", index_dir: "/spec/fixtures/", csl: csl, bibliography: bibliography } }
|
|
21
21
|
|
|
22
22
|
describe "MDS DOI API", vcr: true, :order => :defined do
|
|
23
23
|
context "put" do
|
|
@@ -105,20 +105,21 @@ describe Cirneco::Doi do
|
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
it 'mints dois for list of urls' do
|
|
108
|
+
filepath = fixture_path + 'index.html'
|
|
108
109
|
subject.options = mint_options
|
|
109
|
-
expect { subject.mint
|
|
110
|
+
expect { subject.mint filepath }.to output("DOI 10.5072/0000-03VC minted for cool-dois.html\nDOI 10.5072/0000-00SS minted for index.html\n").to_stdout
|
|
110
111
|
end
|
|
111
112
|
|
|
112
113
|
it 'hides dois for list of urls' do
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
subject.
|
|
116
|
-
expect { subject.hide [filepath] }.to output("DOI 10.5072/0000-03WD hidden for #{filename}\n").to_stdout
|
|
114
|
+
filepath = fixture_path + 'index.html'
|
|
115
|
+
subject.options = mint_options
|
|
116
|
+
expect { subject.hide filepath }.to output("No DOI for cool-dois.html\nNo DOI for index.html\n").to_stdout
|
|
117
117
|
end
|
|
118
118
|
|
|
119
119
|
it 'mints and hides dois for list of urls' do
|
|
120
|
+
filepath = fixture_path + 'index.html'
|
|
120
121
|
subject.options = mint_options
|
|
121
|
-
expect { subject.mint_and_hide
|
|
122
|
+
expect { subject.mint_and_hide filepath }.to output("DOI 10.5072/0000-03VC minted and hidden for cool-dois.html\nDOI 10.5072/0000-00SS minted and hidden for index.html\n").to_stdout
|
|
122
123
|
end
|
|
123
124
|
end
|
|
124
125
|
end
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html>
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<!-- (1) Optimize for mobile versions: http://goo.gl/EOpFl -->
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
8
|
+
<!-- (1) force latest IE rendering engine: bit.ly/1c8EiC9 -->
|
|
9
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
<title>DataCite Blog</title>
|
|
13
|
+
<meta name="description" content="The DataCite Blog" />
|
|
14
|
+
|
|
15
|
+
<meta name="HandheldFriendly" content="True" />
|
|
16
|
+
<meta name="MobileOptimized" content="320" />
|
|
17
|
+
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
18
|
+
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
19
|
+
|
|
20
|
+
<!-- DublinCore Metadata -->
|
|
21
|
+
<meta property="dc:title" content="DataCite Blog" />
|
|
22
|
+
<meta property="dc:format" content="text/html" />
|
|
23
|
+
<meta property="dc:language" content="en" />
|
|
24
|
+
<meta property="dc:rights" content="CC-BY" />
|
|
25
|
+
<meta property="dc:source" content="DataCite Blog" />
|
|
26
|
+
<meta property="dc:subject" content="Scholarly Communication" />
|
|
27
|
+
<meta property="dc:type" content="website" />
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
<meta property="og:site_name" content="DataCite Blog" />
|
|
31
|
+
<meta property="og:description" content="The DataCite Blog" />
|
|
32
|
+
<meta property="og:image" content="/images/datacite.png" />
|
|
33
|
+
<meta property="og:type" content="blog" />
|
|
34
|
+
|
|
35
|
+
<link href="//fonts.googleapis.com/css?family=Libre+Baskerville:400,400i,700" rel="stylesheet">
|
|
36
|
+
<link href='//fonts.googleapis.com/css?family=Raleway:400,600,400italic,600italic' rel='stylesheet' type='text/css'>
|
|
37
|
+
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type='text/css'>
|
|
38
|
+
<link href="//assets.datacite.org/stylesheets/datacite.css" rel='stylesheet' type='text/css'>
|
|
39
|
+
|
|
40
|
+
<link href="/images/favicon.ico" rel="icon" type="image/ico" />
|
|
41
|
+
|
|
42
|
+
<script
|
|
43
|
+
src="//d2wy8f7a9ursnm.cloudfront.net/bugsnag-2.min.js"
|
|
44
|
+
data-apikey="c37a5861967091a9b42a1a77e235114a">
|
|
45
|
+
</script>
|
|
46
|
+
|
|
47
|
+
<script type="application/ld+json">
|
|
48
|
+
{"@context":"http://schema.org","@type":"Blog","@id":"https://doi.org/10.5072/0000-NW90","name":"DataCite Blog","alternateName":"MS-25-1785","url":"https://blog.datacite.org/","author":[{"@type":"Person","@id":"http://orcid.org/0000-0002-9300-5278","givenName":"Patricia","familyName":"Cruse","name":"Trisha Cruse"},{"@type":"Person","@id":"http://orcid.org/0000-0001-5952-7630","givenName":"Laura","familyName":"Rueda","name":"Laura Rueda"},{"@type":"Person","@id":"http://orcid.org/0000-0003-3484-6875","givenName":"Kristian","familyName":"Garza","name":"Kristian Garza"},{"@type":"Person","@id":"http://orcid.org/0000-0003-1419-2405","givenName":"Martin","familyName":"Fenner","name":"Martin Fenner"}],"publisher":{"@type":"Organization","name":"DataCite"},"dateCreated":"2015-08-03","datePublished":"2015-08-03","dateModified":"2015-08-03","version":"1.0","description":"The DataCite blog.","license":"https://creativecommons.org/licenses/by/4.0/","hasPart":[{"@type":"BlogPosting","@id":"https://doi.org/10.5438/55E5-T5C0","name":"Cool DOI's","datePublished":"2016-12-15"}]}
|
|
49
|
+
</script>
|
|
50
|
+
</head>
|
|
51
|
+
<body>
|
|
52
|
+
|
|
53
|
+
<!-- header start -->
|
|
54
|
+
|
|
55
|
+
<div class="header" id="navtop">
|
|
56
|
+
<div class="navbar navbar-default navbar-static-top" role="navigation">
|
|
57
|
+
<div class="container-fluid">
|
|
58
|
+
<div class="navbar-header"
|
|
59
|
+
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
|
60
|
+
<span class="sr-only">Toggle navigation</span>
|
|
61
|
+
<span class="icon-bar"></span>
|
|
62
|
+
<span class="icon-bar"></span>
|
|
63
|
+
<span class="icon-bar"></span>
|
|
64
|
+
</button>
|
|
65
|
+
<a class="navbar-brand" href="/">DataCite Blog</a>
|
|
66
|
+
</div>
|
|
67
|
+
<div class="navbar-collapse collapse">
|
|
68
|
+
<ul class="nav navbar-nav navbar-right">
|
|
69
|
+
<li class="dropdown">
|
|
70
|
+
<a href="#" class="dropdown-toggle" data-toggle="dropdown" id="support">Support <span class="caret"></a>
|
|
71
|
+
<ul class="dropdown-menu" role="menu">
|
|
72
|
+
<li><a href="mailto:support@datacite.org">Email</a></li>
|
|
73
|
+
<li><a href="https://github.com/datacite/blog">Source Code</a></li>
|
|
74
|
+
</ul>
|
|
75
|
+
</li>
|
|
76
|
+
<li class="dropdown">
|
|
77
|
+
<a href="#" class="dropdown-toggle" data-toggle="dropdown" id="sites"><i class='fa fa-th'></i> <span class="caret"></span></a>
|
|
78
|
+
<ul class="dropdown-menu" role="menu">
|
|
79
|
+
<li>
|
|
80
|
+
<a href='https://api.datacite.org'>
|
|
81
|
+
<i class='fa fa-cogs fa-fw'></i>
|
|
82
|
+
API
|
|
83
|
+
</a>
|
|
84
|
+
</li>
|
|
85
|
+
<li>
|
|
86
|
+
<a href='https://blog.datacite.org'>
|
|
87
|
+
<i class='fa fa-rss fa-fw'></i>
|
|
88
|
+
Blog
|
|
89
|
+
</a>
|
|
90
|
+
</li>
|
|
91
|
+
<li>
|
|
92
|
+
<a href='http://citation.crosscite.org'>
|
|
93
|
+
<i class='fa fa-file-text-o fa-fw'></i>
|
|
94
|
+
Citation Formatter
|
|
95
|
+
</a>
|
|
96
|
+
</li>
|
|
97
|
+
<li>
|
|
98
|
+
<a href='https://data.datacite.org'>
|
|
99
|
+
<i class='fa fa-repeat fa-fw'></i>
|
|
100
|
+
Content Resolver
|
|
101
|
+
</a>
|
|
102
|
+
</li>
|
|
103
|
+
<li>
|
|
104
|
+
<a href='https://www.datacite.org'>
|
|
105
|
+
<i class='fa fa-globe fa-fw'></i>
|
|
106
|
+
Homepage
|
|
107
|
+
</a>
|
|
108
|
+
</li>
|
|
109
|
+
<li>
|
|
110
|
+
<a href='https://mds.datacite.org'>
|
|
111
|
+
<i class='fa fa-database fa-fw'></i>
|
|
112
|
+
MDS
|
|
113
|
+
</a>
|
|
114
|
+
</li>
|
|
115
|
+
<li>
|
|
116
|
+
<a href='https://oai.datacite.org'>
|
|
117
|
+
<i class='fa fa-table fa-fw'></i>
|
|
118
|
+
OAI-PMH
|
|
119
|
+
</a>
|
|
120
|
+
</li>
|
|
121
|
+
<li>
|
|
122
|
+
<a href='https://profiles.datacite.org'>
|
|
123
|
+
<i class='fa fa-user fa-fw'></i>
|
|
124
|
+
Profiles
|
|
125
|
+
</a>
|
|
126
|
+
</li>
|
|
127
|
+
<li>
|
|
128
|
+
<a href='https://schema.datacite.org'>
|
|
129
|
+
<i class='fa fa-file-code-o fa-fw'></i>
|
|
130
|
+
Schema
|
|
131
|
+
</a>
|
|
132
|
+
</li>
|
|
133
|
+
<li>
|
|
134
|
+
<a href='https://search.datacite.org'>
|
|
135
|
+
<i class='fa fa-search fa-fw'></i>
|
|
136
|
+
Search
|
|
137
|
+
</a>
|
|
138
|
+
</li>
|
|
139
|
+
<li>
|
|
140
|
+
<a href='https://stats.datacite.org'>
|
|
141
|
+
<i class='fa fa-bar-chart fa-fw'></i>
|
|
142
|
+
Statistics
|
|
143
|
+
</a>
|
|
144
|
+
</li>
|
|
145
|
+
<li>
|
|
146
|
+
<a href='http://status.datacite.org'>
|
|
147
|
+
<i class='fa fa-calendar-check-o fa-fw'></i>
|
|
148
|
+
Status
|
|
149
|
+
</a>
|
|
150
|
+
</li>
|
|
151
|
+
</ul>
|
|
152
|
+
</li>
|
|
153
|
+
</ul>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
<!-- header end -->
|
|
160
|
+
|
|
161
|
+
<div class="container-fluid">
|
|
162
|
+
<div class="row">
|
|
163
|
+
<div class='col-md-8'>
|
|
164
|
+
<div class="search-wide">
|
|
165
|
+
<form action="/index.html" method="get" id="search-form" class="form-horizontal" role="form" data-site-url="https://blog.datacite.org" data-search-url="https://api.datacite.org">
|
|
166
|
+
<div class="input-group">
|
|
167
|
+
<input type="text" id="query" name="query" placeholder="Search blog" class="form-control">
|
|
168
|
+
<div class="input-group-btn">
|
|
169
|
+
<button type="submit" class="btn btn-primary hidden-xs">Search</button>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
</form>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
<div id="content"></div>
|
|
177
|
+
<div class="row">
|
|
178
|
+
<div class='col-md-4 post-list' id="left-col">
|
|
179
|
+
</div>
|
|
180
|
+
<div class='col-md-4 post-list' id="right-col">
|
|
181
|
+
</div>
|
|
182
|
+
<div class='col-md-3 col-md-offset-1'>
|
|
183
|
+
<div id="tags"/>
|
|
184
|
+
</div>
|
|
185
|
+
</div></div>
|
|
186
|
+
<div class="row">
|
|
187
|
+
<div class='col-md-8' id="pager"></div>
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
|
|
191
|
+
<!-- footer start -->
|
|
192
|
+
|
|
193
|
+
<footer class='row footer'>
|
|
194
|
+
<div class="container-fluid">
|
|
195
|
+
<div class='col-md-3 col-sm-4'>
|
|
196
|
+
<h4>About DataCite</h4>
|
|
197
|
+
<ul>
|
|
198
|
+
<li><a href="https://www.datacite.org/mission.html">What we do</a></a></li>
|
|
199
|
+
<li><a href="https://www.datacite.org/board.html">Board</a></a></li>
|
|
200
|
+
<li><a href="https://www.datacite.org/steering.html">Steering groups</a></a></li>
|
|
201
|
+
<li><a href="https://www.datacite.org/staff.html">Staff</a></a></li>
|
|
202
|
+
<li><a href="https://www.datacite.org/jobopportunities.html">Job opportunities</a></a></li>
|
|
203
|
+
</ul>
|
|
204
|
+
</div>
|
|
205
|
+
<div class='col-md-3 col-sm-4'>
|
|
206
|
+
<h4>Services</h4>
|
|
207
|
+
<ul>
|
|
208
|
+
<li><a href="https://www.datacite.org/dois.html">Assign DOIs</a></a></li>
|
|
209
|
+
<li><a href="https://www.datacite.org/search.html">Metadata search</a></a></li>
|
|
210
|
+
<li><a href="https://www.datacite.org/eventdata.html">Event data</a></a></li>
|
|
211
|
+
<li><a href="https://www.datacite.org/profiles.html">Profiles</a></a></li>
|
|
212
|
+
<li><a href="https://www.datacite.org/re3data.html">re3data</a></a></li>
|
|
213
|
+
<li><a href="https://www.datacite.org/citation.html">Citation formatter</a></a></li>
|
|
214
|
+
<li><a href="https://www.datacite.org/stats.html">Statistics</a></a></li>
|
|
215
|
+
<li><a href="https://www.datacite.org/service.html">Service status</a></a></li>
|
|
216
|
+
<li><a href="https://www.datacite.org/content.html">Content negotiation</a></a></li>
|
|
217
|
+
<li><a href="https://www.datacite.org/oaipmh.html">OAI-PMH</a></a></li>
|
|
218
|
+
<li><a href="https://www.datacite.org/test.html">Test environment</a></a></li>
|
|
219
|
+
</ul>
|
|
220
|
+
</div>
|
|
221
|
+
<div class='col-md-3 col-sm-4'>
|
|
222
|
+
<h4>Resources</h4>
|
|
223
|
+
<ul>
|
|
224
|
+
<li><a href="https://schema.datacite.org">Metadata schema</a></a></li>
|
|
225
|
+
<li><a href="https://www.datacite.org/technical.html">Technical documentation</a></a></li>
|
|
226
|
+
<li><a href="https://www.datacite.org/outreach.html">Outreach material</a></a></li>
|
|
227
|
+
<li><a href="https://www.datacite.org/events.html">Events</a></a></li>
|
|
228
|
+
</ul>
|
|
229
|
+
<h4>Community</h4>
|
|
230
|
+
<ul>
|
|
231
|
+
<li><a href="https://www.datacite.org/members.html">Members</a></a></li>
|
|
232
|
+
<li><a href="https://www.datacite.org/partners.html">Partners</a></a></li>
|
|
233
|
+
<li><a href="https://www.datacite.org/steering.html">Steering groups</a></a></li>
|
|
234
|
+
<li><a href="https://www.datacite.org/events.html">Events</a></a></li>
|
|
235
|
+
</ul>
|
|
236
|
+
</div>
|
|
237
|
+
<div class='col-md-3'>
|
|
238
|
+
<h4 class="share">Contact us</h4>
|
|
239
|
+
<a href='mailto:support@datacite.org' class="share">
|
|
240
|
+
<i class='fa fa-at'></i>
|
|
241
|
+
</a>
|
|
242
|
+
<a href='https://blog.datacite.org' class="share">
|
|
243
|
+
<i class='fa fa-rss'></i>
|
|
244
|
+
</a>
|
|
245
|
+
<a href='https://twitter.com/datacite' class="share">
|
|
246
|
+
<i class='fa fa-twitter'></i>
|
|
247
|
+
</a>
|
|
248
|
+
<a href='https://www.linkedin.com/company/datacite' class="share">
|
|
249
|
+
<i class='fa fa-linkedin'></i>
|
|
250
|
+
</a>
|
|
251
|
+
<ul class="share">
|
|
252
|
+
<li><a href="https://www.datacite.org/terms.html">Terms and conditions</a></a></li>
|
|
253
|
+
<li><a href="https://www.datacite.org/privacy.html">Privacy policy</a></a></li>
|
|
254
|
+
<li><a href="https://www.datacite.org/acknowledgments.html">Acknowledgements</a></a></li>
|
|
255
|
+
</ul>
|
|
256
|
+
</div>
|
|
257
|
+
</div>
|
|
258
|
+
</div>
|
|
259
|
+
|
|
260
|
+
<!-- footer end -->
|
|
261
|
+
|
|
262
|
+
<script src="//code.jquery.com/jquery-2.1.4.min.js"></script>
|
|
263
|
+
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
|
|
264
|
+
<script src="//assets.datacite.org/javascripts/default.js"></script>
|
|
265
|
+
<script src="/javascripts/readingTime.min.js"></script>
|
|
266
|
+
<script src="/javascripts/index.js"></script>
|
|
267
|
+
<script src="/javascripts/search.js"></script>
|
|
268
|
+
<script id="dsq-count-scr" src="//datacite.disqus.com/count.js" async></script>
|
|
269
|
+
|
|
270
|
+
</body>
|
|
271
|
+
</html>
|
data/spec/fixtures/index.html
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
</script>
|
|
46
46
|
|
|
47
47
|
<script type="application/ld+json">
|
|
48
|
-
{"@context":"http://schema.org","@type":"Blog","@id":"https://doi.org/10.5072/5PS5-G3V~","name":"DataCite Blog","url":"https://blog.datacite.org/data-driven-development/","author":[{"@type":"Person","@id":"http://orcid.org/0000-0002-9300-5278","givenName":"Patricia","familyName":"Cruse","name":"Trisha Cruse"},{"@type":"Person","@id":"http://orcid.org/0000-0001-5952-7630","givenName":"Laura","familyName":"Rueda","name":"Laura Rueda"},{"@type":"Person","@id":"http://orcid.org/0000-0003-3484-6875","givenName":"Kristian","familyName":"Garza","name":"Kristian Garza"},{"@type":"Person","@id":"http://orcid.org/0000-0003-1419-2405","givenName":"Martin","familyName":"Fenner","name":"Martin Fenner"}],"publisher":{"@type":"Organization","name":"DataCite"},"dateCreated":"2015-08-03","datePublished":"2015-08-03","dateModified":"2015-08-03","version":"1.0","description":"The DataCite blog.","license":"https://creativecommons.org/licenses/by/4.0/","hasPart":[{"@type":"BlogPosting","@id":"https://doi.org/10.5072/CT8B-X1CE","name":"Mysteries in Reference Lists","datePublished":"2016-12-23"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/4K3M-NYVG","name":"Eating your own Dog Food","datePublished":"2016-12-20"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/ZWSF-4Y7Y","name":"2016 in review","datePublished":"2016-12-19"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/55E5-T5C0","name":"Cool DOI's","datePublished":"2016-12-15"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/6WCF-EFW5","name":"A common API for retrieving DataCite Metadata","datePublished":"2016-11-03"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/TNHX-54CG","name":"Announcing the Organization Identifier Project: a Way Forward","datePublished":"2016-11-01"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/ESYS-F867","name":"The Tsinghua University Library joins DataCite","datePublished":"2016-10-24"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/9JWD-TN3A","name":"Welcome United States Geological Survey (USGS)","datePublished":"2016-10-17"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/1YAA-K6D1","name":"DataCite Welcomes TIND","datePublished":"2016-10-14"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/DC13-VP4J","name":"Three things you should know about our new DOI Citation Formatting service","datePublished":"2016-10-13"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/8SZS-1H0H","name":"DataCite’s New Membership Model - Join Us!","datePublished":"2016-10-05"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/VQ3X-QDWT","name":"New DataCite Metadata Schema 4.0","datePublished":"2016-09-21"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/WMAS-KM0V","name":"Software Citation Principles","datePublished":"2016-09-20"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/PRF0-NRXQ","name":"PIDapalooza, the festival of persistent identifiers is coming soon!","datePublished":"2016-09-01"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/Y131-YX9D","name":"Announcing Our New Application Developer","datePublished":"2016-08-24"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/Y4KS-KSBC","name":"Dynamic Data Citation Webinar","datePublished":"2016-07-18"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/X4JQ-EGT5","name":"DataCite Metadata Schema 4.0 Webinar","datePublished":"2016-07-08"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/VQ2T-VR4K","name":"Relaunching DataCite Search","datePublished":"2016-07-05"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/QW2X-PGCY","name":"Our New Website: Dynamic, Responsive and Adapted to your Needs","datePublished":"2016-06-27"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/EA4H-TX3G","name":"DataCite Mandatory Properties","datePublished":"2016-05-20"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/KTR7-ZJJH","name":"Publishing tabular data as blog post","datePublished":"2016-05-20"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/MRR6-MF3Q","name":"Get involved in the DataCite Community!","datePublished":"2016-05-18"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/Q2GH-6EGD","name":"Zotero for Data Repositories Webinar","datePublished":"2016-05-17"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/CAB5-TEG0","name":"Data catalog cards: simplifying article/data linking","datePublished":"2016-05-13"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/4QX3-RP8Y","name":"Thinking about CSV","datePublished":"2016-05-04"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/78P9-FNRN","name":"Tip: Getting data into Impactstory but not your ORCID profile","datePublished":"2016-05-01"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/V909-67A?","name":"DC2AP and DC2RDF Webinar","datePublished":"2016-04-26"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/C3BY-VYZS","name":"We were out in Force","datePublished":"2016-04-19"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/SHR4-2BS2","name":"To better understand research communication, we need a GROID (group object identifier)","datePublished":"2016-04-17"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/PE54-ZJ5T","name":"It's all about Relations","datePublished":"2016-04-14"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/41MH-KSA?","name":"re3data.org Reaches a Milestone and Begins Offering Badges","datePublished":"2016-04-13"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/C81T-HKVP","name":"General Assembly 2016, moving DataCite forward","datePublished":"2016-03-31"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/MSK0-15R2","name":"DataCite is Hiring an Application Developer","datePublished":"2016-03-30"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/BMMQ-YCE9","name":"Dataverse is now minting DOIs with DataCite Metadata Store API","datePublished":"2016-03-30"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/F17B-45VZ","name":"The Location of the Citation: are Data Citation Recommendations Having an Effect?","datePublished":"2016-03-28"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/SS2R-9CNS","name":"Open Science, Open Data and DataCite DOIs","datePublished":"2016-03-11"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/6GEP-3S5E","name":"Enhancements to creating and updating re3data","datePublished":"2016-02-24"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/BZAK-W7E4","name":"DataCite to Dublin Core application profile (DC2AP)","datePublished":"2016-02-18"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/4BY7-B7ZN","name":"New re3data.org Schema and Search Functionality","datePublished":"2016-01-20"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/YHCJ-P5HR","name":"Launching the DataCite Status Page","datePublished":"2016-01-11"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/XCBJ-G7ZY","name":"Announcing the DataCite Blog Relaunch","datePublished":"2015-12-28"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/T0AP-D5W7","name":"Infrastructure Tips for the Non-Profit Startup","datePublished":"2015-12-23"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/CJT2-T6DZ","name":"DataCite Profiles and ORCID Auto-Update webinar","datePublished":"2015-12-05"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/MCNV-GA6N","name":"re3data Webinar and DataCite: En Avant!","datePublished":"2015-11-25"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/15X1-BJ6R","name":"Announcing the DataCite Profiles Service","datePublished":"2015-11-09"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/GA8V-FA94","name":"DataCite Is an Exciting Place to Be","datePublished":"2015-11-02"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/3DFW-Z4KQ","name":"Explaining the DataCite/ORCID Auto-update","datePublished":"2015-10-29"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/FERW-CWHQ","name":"Auto-Update Has Arrived!","datePublished":"2015-10-26"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/1H7N-3CEN","name":"Software Citation Workflows","datePublished":"2015-10-19"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/C61Q-Z2K7","name":"Happy Birthday ORCID","datePublished":"2015-10-16"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/W029-Y6W~","name":"Contributor Information in DataCite Metadata","datePublished":"2015-10-12"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/85SN-MX23","name":"Recap: Persistent Identifiers in Paris","datePublished":"2015-10-04"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/D9EQ-9DGA","name":"Discussing the Scholarly Container","datePublished":"2015-10-02"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/7RXD-S8A3","name":"Thoughts on the Research Data Alliance 6th Plenary","datePublished":"2015-10-01"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/JM9F-325F","name":"Persistent Identifiers: Enabling Services for Data Intensive Research","datePublished":"2015-09-22"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/BC11-CQW1","name":"Differences between ORCID and DataCite Metadata","datePublished":"2015-09-18"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/2WFX-2HZ1","name":"Adding References to the DataCite Blog","datePublished":"2015-09-16"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/JZG5-VCQV","name":"Announcing Data-Level Metrics in DataCite Labs","datePublished":"2015-09-09"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/5HZJ-5KDS","name":"Using YAML Frontmatter with CSV","datePublished":"2015-09-03"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/02BH-TGC7","name":"When Counting is Hard","datePublished":"2015-08-31"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/1HV8-2GC2","name":"Digging into Metadata using R","datePublished":"2015-08-20"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/S8GF-0CK9","name":"From Pilot to Service","datePublished":"2015-08-17"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/5AEG-WEEV","name":"Reference Lists and Tables of Content","datePublished":"2015-08-15"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/8QKH-1R6~","name":"Overcoming Development Pain","datePublished":"2015-08-11"},{"@type":"BlogPosting","@id":"https://doi.org/10.5072/5PS5-G3V~","name":"Data-Driven Development","datePublished":"2015-08-03"}]}
|
|
48
|
+
{"@context":"http://schema.org","@type":"Blog","@id":"https://blog.datacite.org/","name":"DataCite Blog","alternateName":"MS-25-1785","url":"https://blog.datacite.org/","author":[{"@type":"Person","@id":"http://orcid.org/0000-0002-9300-5278","givenName":"Patricia","familyName":"Cruse","name":"Trisha Cruse"},{"@type":"Person","@id":"http://orcid.org/0000-0001-5952-7630","givenName":"Laura","familyName":"Rueda","name":"Laura Rueda"},{"@type":"Person","@id":"http://orcid.org/0000-0003-3484-6875","givenName":"Kristian","familyName":"Garza","name":"Kristian Garza"},{"@type":"Person","@id":"http://orcid.org/0000-0003-1419-2405","givenName":"Martin","familyName":"Fenner","name":"Martin Fenner"}],"publisher":{"@type":"Organization","name":"DataCite"},"dateCreated":"2015-08-03","datePublished":"2015-08-03","dateModified":"2015-08-03","version":"1.0","description":"The DataCite blog.","license":"https://creativecommons.org/licenses/by/4.0/","hasPart":[{"@type":"BlogPosting","@id":"cool-dois.html","name":"Cool DOI's","datePublished":"2016-12-15"}]}
|
|
49
49
|
</script>
|
|
50
50
|
</head>
|
|
51
51
|
<body>
|