rof 1.0.7 → 1.2.0
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 +9 -7
- data/LICENSE +201 -16
- data/Rakefile +46 -0
- data/bin/csv_to_rof +1 -2
- data/bin/fedora_to_rof +7 -1
- data/bin/jsonld_to_rof +26 -0
- data/bin/osf_to_rof +6 -2
- data/bin/rof +5 -19
- data/lib/rof.rb +2 -6
- data/lib/rof/access.rb +1 -1
- data/lib/rof/cli.rb +104 -67
- data/lib/rof/compare_rof.rb +68 -39
- data/lib/rof/filter.rb +21 -0
- data/lib/rof/filters.rb +38 -0
- data/lib/rof/filters/bendo.rb +15 -17
- data/lib/rof/filters/date_stamp.rb +5 -4
- data/lib/rof/filters/file_to_url.rb +5 -3
- data/lib/rof/filters/label.rb +9 -7
- data/lib/rof/filters/work.rb +7 -5
- data/lib/rof/ingest.rb +5 -0
- data/lib/rof/osf_context.rb +2 -2
- data/lib/rof/rdf_context.rb +2 -0
- data/lib/rof/translator.rb +18 -0
- data/lib/rof/translators.rb +23 -0
- data/lib/rof/{translate_csv.rb → translators/csv_to_rof.rb} +4 -3
- data/lib/rof/translators/fedora_to_rof.rb +244 -0
- data/lib/rof/translators/jsonld_to_rof.rb +112 -0
- data/lib/rof/translators/jsonld_to_rof/accumulator.rb +175 -0
- data/lib/rof/translators/jsonld_to_rof/predicate_handler.rb +223 -0
- data/lib/rof/translators/jsonld_to_rof/predicate_object_handler.rb +125 -0
- data/lib/rof/translators/jsonld_to_rof/statement_handler.rb +91 -0
- data/lib/rof/translators/osf_to_rof.rb +191 -0
- data/lib/rof/utility.rb +44 -1
- data/lib/rof/version.rb +1 -1
- data/rof.gemspec +10 -2
- data/spec/coverage_helper.rb +17 -0
- data/spec/fixtures/for_utility_load_items_from_json_file/multiple_items.json +8 -0
- data/spec/fixtures/for_utility_load_items_from_json_file/parse_error.json +3 -0
- data/spec/fixtures/for_utility_load_items_from_json_file/single_item.json +3 -0
- data/spec/fixtures/jsonld_to_rof/0g354f18610.jsonld +113 -0
- data/spec/fixtures/jsonld_to_rof/0g354f18610.rof +96 -0
- data/spec/fixtures/jsonld_to_rof/2j62s467216.jsonld +113 -0
- data/spec/fixtures/jsonld_to_rof/2j62s467216.rof +93 -0
- data/spec/fixtures/jsonld_to_rof/2v23vt16z2z.jsonld +70 -0
- data/spec/fixtures/jsonld_to_rof/2v23vt16z2z.rof +87 -0
- data/spec/fixtures/jsonld_to_rof/cr56n01253w.jsonld +84 -0
- data/spec/fixtures/jsonld_to_rof/cr56n01253w.rof +95 -0
- data/spec/fixtures/jsonld_to_rof/h989r21069m.jsonld +84 -0
- data/spec/fixtures/jsonld_to_rof/h989r21069m.rof +98 -0
- data/spec/fixtures/jsonld_to_rof/js956d59913.jsonld +79 -0
- data/spec/fixtures/jsonld_to_rof/js956d59913.rof +89 -0
- data/spec/fixtures/jsonld_to_rof/m039k358q5c.jsonld +80 -0
- data/spec/fixtures/jsonld_to_rof/m039k358q5c.rof +64 -0
- data/spec/fixtures/jsonld_to_rof/nk322b9161g.jsonld +89 -0
- data/spec/fixtures/jsonld_to_rof/nk322b9161g.rof +69 -0
- data/spec/fixtures/jsonld_to_rof/p8418k7430d.jsonld +84 -0
- data/spec/fixtures/jsonld_to_rof/p8418k7430d.rof +67 -0
- data/spec/fixtures/jsonld_to_rof/xg94hm53h0c.jsonld +98 -0
- data/spec/fixtures/jsonld_to_rof/xg94hm53h0c.rof +110 -0
- data/spec/fixtures/jsonld_to_rof/zk51vd69n1r.jsonld +94 -0
- data/spec/fixtures/jsonld_to_rof/zk51vd69n1r.rof +121 -0
- data/spec/fixtures/osf/phz6b.tar.gz +0 -0
- data/spec/lib/rof/access_spec.rb +30 -23
- data/spec/lib/rof/cli_spec.rb +83 -60
- data/spec/lib/rof/compare_rof_spec.rb +35 -24
- data/spec/lib/rof/filter_spec.rb +10 -0
- data/spec/lib/rof/filters/bendo_spec.rb +42 -0
- data/spec/lib/rof/filters/date_stamp_spec.rb +9 -5
- data/spec/lib/rof/filters/file_to_url_spec.rb +7 -3
- data/spec/lib/rof/filters/label_spec.rb +121 -77
- data/spec/lib/rof/filters/work_spec.rb +7 -4
- data/spec/lib/rof/filters_spec.rb +14 -0
- data/spec/lib/rof/translator_spec.rb +15 -0
- data/spec/lib/rof/{translate_csv_spec.rb → translators/csv_to_rof_spec.rb} +14 -14
- data/spec/lib/rof/translators/fedora_to_rof_spec.rb +64 -0
- data/spec/lib/rof/translators/jsonld_to_rof/accumulator_spec.rb +121 -0
- data/spec/lib/rof/translators/jsonld_to_rof/predicate_handler_spec.rb +73 -0
- data/spec/lib/rof/translators/jsonld_to_rof/predicate_object_handler_spec.rb +48 -0
- data/spec/lib/rof/translators/jsonld_to_rof/statement_handler_spec.rb +40 -0
- data/spec/lib/rof/translators/jsonld_to_rof_spec.rb +120 -0
- data/spec/lib/rof/{osf_to_rof_spec.rb → translators/osf_to_rof_spec.rb} +55 -25
- data/spec/lib/rof/translators_spec.rb +14 -0
- data/spec/lib/rof/utility_spec.rb +47 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/support/an_rof_filter.rb +10 -0
- metadata +186 -15
- data/lib/rof/get_from_fedora.rb +0 -211
- data/lib/rof/osf_to_rof.rb +0 -123
- data/spec/lib/rof/get_from_fedora_spec.rb +0 -22
data/lib/rof/utility.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'mime-types'
|
|
2
2
|
require 'zlib'
|
|
3
|
+
require 'rsolr'
|
|
3
4
|
require 'rubygems/package'
|
|
4
5
|
|
|
5
6
|
module ROF
|
|
@@ -63,13 +64,55 @@ module ROF
|
|
|
63
64
|
s
|
|
64
65
|
end
|
|
65
66
|
|
|
67
|
+
# test for embargo xml cases
|
|
68
|
+
def self.has_embargo_date?(embargo_xml)
|
|
69
|
+
return false if embargo_xml == '' || embargo_xml.nil?
|
|
70
|
+
return false unless embargo_xml.elements['machine'].has_elements? && embargo_xml.elements['machine'].elements['date'].has_text?
|
|
71
|
+
true
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# @api public
|
|
75
|
+
# @param fname [String] Path to filename
|
|
76
|
+
# @param outfile [#puts] Where to write exceptions
|
|
77
|
+
# @return [Array] The items in the JSON document, coerced into an Array (if a single item was encountered)
|
|
78
|
+
def self.load_items_from_json_file(fname, outfile = STDERR)
|
|
79
|
+
items = nil
|
|
80
|
+
File.open(fname, 'r:UTF-8') do |f|
|
|
81
|
+
items = JSON.parse(f.read)
|
|
82
|
+
end
|
|
83
|
+
items = [items] unless items.is_a? Array
|
|
84
|
+
items
|
|
85
|
+
rescue JSON::ParserError => e
|
|
86
|
+
outfile.puts("Error reading #{fname}:#{e}")
|
|
87
|
+
exit!(1)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# query SOLR for Previous version of OSF Project.
|
|
91
|
+
# Return its fedora pid if it is found, nil otherwise
|
|
92
|
+
def self.check_solr_for_previous(config, osf_project_identifier)
|
|
93
|
+
solr_url = config.fetch('solr_url', nil)
|
|
94
|
+
return nil if solr_url.nil?
|
|
95
|
+
solr = RSolr.connect url: "#{solr_url}/curatend"
|
|
96
|
+
query = solr.get 'select', params: {
|
|
97
|
+
q: "desc_metadata__osf_project_identifier_ssi:#{osf_project_identifier}",
|
|
98
|
+
rows: 1,
|
|
99
|
+
sort_by: 'date_archived',
|
|
100
|
+
fl: ['id'],
|
|
101
|
+
wt: 'json'
|
|
102
|
+
}
|
|
103
|
+
return nil if (query['response']['numFound']).zero?
|
|
104
|
+
# should only be 1 SOLR doc (the most recent) in docs[0]
|
|
105
|
+
query['response']['docs'][0]['id']
|
|
106
|
+
end
|
|
107
|
+
|
|
66
108
|
# read file from gzipped tar archive
|
|
67
109
|
def self.file_from_targz(targzfile, file_name)
|
|
68
110
|
File.open(targzfile, 'rb') do |file|
|
|
69
111
|
Zlib::GzipReader.wrap(file) do |gz|
|
|
70
112
|
Gem::Package::TarReader.new(gz) do |tar|
|
|
71
113
|
tar.seek(file_name) do |file_entry|
|
|
72
|
-
file_dest_dir = File.join(File.dirname(targzfile),
|
|
114
|
+
file_dest_dir = File.join(File.dirname(targzfile),
|
|
115
|
+
File.dirname(file_entry.full_name))
|
|
73
116
|
FileUtils.mkdir_p(file_dest_dir)
|
|
74
117
|
File.open(File.join(file_dest_dir, File.basename(file_name)), 'wb') do |file_handle|
|
|
75
118
|
file_handle.write(file_entry.read)
|
data/lib/rof/version.rb
CHANGED
data/rof.gemspec
CHANGED
|
@@ -22,22 +22,30 @@ Gem::Specification.new do |spec|
|
|
|
22
22
|
|
|
23
23
|
spec.add_dependency "rdf", "~> 2.0.1"
|
|
24
24
|
spec.add_dependency "rdf-rdfxml"
|
|
25
|
-
|
|
25
|
+
# constrain rdf-turtle since the newer version wants rdf 2.2
|
|
26
|
+
spec.add_dependency "rdf-turtle", '~> 2.0.0'
|
|
26
27
|
spec.add_dependency "rdf-isomorphic"
|
|
27
28
|
spec.add_dependency "json-ld", "~> 2.0.0"
|
|
28
29
|
spec.add_dependency "mime-types", "~> 2.4"
|
|
29
30
|
spec.add_dependency "rubydora", "~> 1.8.1"
|
|
30
31
|
spec.add_dependency "noids_client"
|
|
32
|
+
spec.add_dependency "rsolr"
|
|
31
33
|
spec.add_dependency 'deprecation', '~> 0.1'
|
|
34
|
+
spec.add_dependency 'nokogiri', '~> 1.6.8.1' # Need this version for older rubies
|
|
32
35
|
# only needed because we use ruby < 2.2.2 in production and that doesn't play
|
|
33
36
|
# nice with rails 5
|
|
34
37
|
spec.add_dependency 'activesupport', '< 5.0'
|
|
35
|
-
spec.add_dependency 'ebnf', '< 1.0.2'
|
|
38
|
+
spec.add_dependency 'ebnf', '< 1.0.2'
|
|
39
|
+
# adding this only because bundler selects version 2.1 and it breaks things
|
|
40
|
+
spec.add_dependency 'rdf-xsd', '~> 2.0.0'
|
|
36
41
|
|
|
37
42
|
spec.add_development_dependency "bundler", "~> 1.3"
|
|
43
|
+
spec.add_development_dependency "codeclimate-test-reporter"
|
|
44
|
+
spec.add_development_dependency "fasterer"
|
|
38
45
|
spec.add_development_dependency "rake"
|
|
39
46
|
spec.add_development_dependency 'rspec'
|
|
40
47
|
spec.add_development_dependency 'rspec-its'
|
|
48
|
+
spec.add_development_dependency "simplecov"
|
|
41
49
|
spec.add_development_dependency 'vcr'
|
|
42
50
|
spec.add_development_dependency 'webmock'
|
|
43
51
|
spec.add_development_dependency 'equivalent-xml'
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Generation Notes:
|
|
2
|
+
## This file was generated via the commitment:install generator. You are free
|
|
3
|
+
## and expected to change this file.
|
|
4
|
+
if ENV['COV'] || ENV['COVERAGE'] || ENV['TRAVIS']
|
|
5
|
+
if ENV['TRAVIS']
|
|
6
|
+
require 'simplecov'
|
|
7
|
+
require "codeclimate-test-reporter"
|
|
8
|
+
SimpleCov.start do
|
|
9
|
+
formatter(
|
|
10
|
+
SimpleCov::Formatter::MultiFormatter.new([SimpleCov::Formatter::HTMLFormatter, CodeClimate::TestReporter::Formatter])
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
elsif ENV['COV'] || ENV['COVERAGE']
|
|
14
|
+
require 'simplecov'
|
|
15
|
+
SimpleCov.start
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": {
|
|
3
|
+
"und": "https://curate.nd.edu/show/",
|
|
4
|
+
"bibo": "http://purl.org/ontology/bibo/",
|
|
5
|
+
"dc": "http://purl.org/dc/terms/",
|
|
6
|
+
"ebucore": "http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#",
|
|
7
|
+
"foaf": "http://xmlns.com/foaf/0.1/",
|
|
8
|
+
"mrel": "http://id.loc.gov/vocabulary/relators/",
|
|
9
|
+
"nd": "https://library.nd.edu/ns/terms/",
|
|
10
|
+
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
|
|
11
|
+
"vracore": "http://purl.org/vra/",
|
|
12
|
+
"frels": "info:fedora/fedora-system:def/relations-external#",
|
|
13
|
+
"ms": "http://www.ndltd.org/standards/metadata/etdms/1.1/",
|
|
14
|
+
"pav": "http://purl.org/pav/",
|
|
15
|
+
"fedora-model": "info:fedora/fedora-system:def/model#",
|
|
16
|
+
"hydra": "http://projecthydra.org/ns/relations#",
|
|
17
|
+
"hasModel": {
|
|
18
|
+
"@id": "fedora-model:hasModel",
|
|
19
|
+
"@type": "@id"
|
|
20
|
+
},
|
|
21
|
+
"hasEditor": {
|
|
22
|
+
"@id": "hydra:hasEditor",
|
|
23
|
+
"@type": "@id"
|
|
24
|
+
},
|
|
25
|
+
"hasEditorGroup": {
|
|
26
|
+
"@id": "hydra:hasEditorGroup",
|
|
27
|
+
"@type": "@id"
|
|
28
|
+
},
|
|
29
|
+
"isPartOf": {
|
|
30
|
+
"@id": "frels:isPartOf",
|
|
31
|
+
"@type": "@id"
|
|
32
|
+
},
|
|
33
|
+
"isMemberOfCollection": {
|
|
34
|
+
"@id": "frels:isMemberOfCollection",
|
|
35
|
+
"@type": "@id"
|
|
36
|
+
},
|
|
37
|
+
"isEditorOf": {
|
|
38
|
+
"@id": "hydra:isEditorOf",
|
|
39
|
+
"@type": "@id"
|
|
40
|
+
},
|
|
41
|
+
"hasMember": {
|
|
42
|
+
"@id": "frels:hasMember",
|
|
43
|
+
"@type": "@id"
|
|
44
|
+
},
|
|
45
|
+
"previousVersion": "pav:previousVersion"
|
|
46
|
+
},
|
|
47
|
+
"@graph": [{
|
|
48
|
+
"@id": "_:b0",
|
|
49
|
+
"dc:contributor": "Maura Ryan",
|
|
50
|
+
"ms:role": "Research Director"
|
|
51
|
+
}, {
|
|
52
|
+
"@id": "_:b1",
|
|
53
|
+
"dc:contributor": "Jean Porter",
|
|
54
|
+
"ms:role": "Committee Member"
|
|
55
|
+
}, {
|
|
56
|
+
"@id": "_:b2",
|
|
57
|
+
"dc:contributor": "David Clairmont",
|
|
58
|
+
"ms:role": "Committee Member"
|
|
59
|
+
}, {
|
|
60
|
+
"@id": "_:b3",
|
|
61
|
+
"dc:contributor": "Andrew S. Park",
|
|
62
|
+
"ms:role": "Committee Member"
|
|
63
|
+
}, {
|
|
64
|
+
"@id": "_:b4",
|
|
65
|
+
"ms:discipline": ["Philosophy"],
|
|
66
|
+
"ms:level": "Doctoral Dissertation",
|
|
67
|
+
"ms:name": "Doctor of Philosophy"
|
|
68
|
+
}, {
|
|
69
|
+
"@id": "und:0g354f18610",
|
|
70
|
+
"dc:contributor": [{
|
|
71
|
+
"@id": "_:b0"
|
|
72
|
+
}, {
|
|
73
|
+
"@id": "_:b1"
|
|
74
|
+
}, {
|
|
75
|
+
"@id": "_:b2"
|
|
76
|
+
}, {
|
|
77
|
+
"@id": "_:b3"
|
|
78
|
+
}],
|
|
79
|
+
"dc:creator": "Joungeun Lee",
|
|
80
|
+
"dc:date": "2015-06-29",
|
|
81
|
+
"dc:date#created": "",
|
|
82
|
+
"dc:dateSubmitted": "2016-02-18Z",
|
|
83
|
+
"dc:description#abstract": "<p>The goal of this dissertation is to bring together in conversation Aquinas's thoughts on anger and the <i>han</i> (恨)-full anger as a culture-bound syndrome in South Korean people and society, and to make a constructive proposal for working with the anger of the <i>han</i>-filled. Aquinas' ontological cognitivist theory of passion and anger in particular provides a useful hermeneutical tool to analyze and articulate the inner structure of <i>han</i>-full anger and its moral character. The study of <i>han</i>-full anger offers Aquinas’s normative language of anger a chance to encounter the etymological and phenomenological reality of embodied anger and further the life of its bearer living in a marginalized life. Finally, Aquinas’s virtue ethics, taken together with <i>han</i> studies, suggests a modified way to work with the <i>han</i>-full anger. </p>",
|
|
84
|
+
"dc:description#note": "",
|
|
85
|
+
"dc:identifier#other": "",
|
|
86
|
+
"dc:modified": {
|
|
87
|
+
"@value": "2016-02-19Z",
|
|
88
|
+
"@type": "http://www.w3.org/2001/XMLSchema#date"
|
|
89
|
+
},
|
|
90
|
+
"dc:publisher#country": "",
|
|
91
|
+
"dc:rights": "All rights reserved",
|
|
92
|
+
"dc:title": "Anger in Thomas Aquinas and <i>Han</i>-full Anger",
|
|
93
|
+
"dc:title#alternate": "",
|
|
94
|
+
"hydra:hasEditor": {
|
|
95
|
+
"@id": "und:qb98mc9021z"
|
|
96
|
+
},
|
|
97
|
+
"hydra:hasEditorGroup": {
|
|
98
|
+
"@id": "und:q524jm23g92"
|
|
99
|
+
},
|
|
100
|
+
"ms:degree": {
|
|
101
|
+
"@id": "_:b4"
|
|
102
|
+
},
|
|
103
|
+
"nd:accessEdit": "curate_batch_user",
|
|
104
|
+
"nd:accessEmbargoDate": "2016-02-28",
|
|
105
|
+
"nd:accessRead": "jlee20",
|
|
106
|
+
"nd:accessReadGroup": "public",
|
|
107
|
+
"nd:afmodel": "Etd",
|
|
108
|
+
"nd:depositor": "curate_batch_user",
|
|
109
|
+
"nd:representativeFile": {
|
|
110
|
+
"@id": "und:rv042r3997b"
|
|
111
|
+
}
|
|
112
|
+
}]
|
|
113
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"type": "fobject",
|
|
4
|
+
"pid": "und:0g354f18610",
|
|
5
|
+
"af-model": "Etd",
|
|
6
|
+
"rights": {
|
|
7
|
+
"read": [
|
|
8
|
+
"jlee20"
|
|
9
|
+
],
|
|
10
|
+
"edit": [
|
|
11
|
+
"curate_batch_user"
|
|
12
|
+
],
|
|
13
|
+
"read-groups": [
|
|
14
|
+
"public"
|
|
15
|
+
],
|
|
16
|
+
"embargo-date": "2016-02-28",
|
|
17
|
+
"edit-groups": [
|
|
18
|
+
"und:q524jm23g92"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"metadata": {
|
|
22
|
+
"@context": {
|
|
23
|
+
"dc": "http://purl.org/dc/terms/",
|
|
24
|
+
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
|
|
25
|
+
"ms": "http://www.ndltd.org/standards/metadata/etdms/1.1/",
|
|
26
|
+
"ths": "http://id.loc.gov/vocabulary/relators/"
|
|
27
|
+
},
|
|
28
|
+
"dc:title#alternate": [
|
|
29
|
+
|
|
30
|
+
],
|
|
31
|
+
"dc:subject": [
|
|
32
|
+
|
|
33
|
+
],
|
|
34
|
+
"dc:description#abstract": [
|
|
35
|
+
"<p>The goal of this dissertation is to bring together in conversation Aquinas's thoughts on anger and the <i>han</i> (恨)-full anger as a culture-bound syndrome in South Korean people and society, and to make a constructive proposal for working with the anger of the <i>han</i>-filled. Aquinas' ontological cognitivist theory of passion and anger in particular provides a useful hermeneutical tool to analyze and articulate the inner structure of <i>han</i>-full anger and its moral character. The study of <i>han</i>-full anger offers Aquinas’s normative language of anger a chance to encounter the etymological and phenomenological reality of embodied anger and further the life of its bearer living in a marginalized life. Finally, Aquinas’s virtue ethics, taken together with <i>han</i> studies, suggests a modified way to work with the <i>han</i>-full anger. </p>"
|
|
36
|
+
],
|
|
37
|
+
"dc:rights": [
|
|
38
|
+
"All rights reserved"
|
|
39
|
+
],
|
|
40
|
+
"dc:language": [
|
|
41
|
+
|
|
42
|
+
],
|
|
43
|
+
"dc:date": [
|
|
44
|
+
"2015-06-29"
|
|
45
|
+
],
|
|
46
|
+
"dc:title": "Anger in Thomas Aquinas and <i>Han</i>-full Anger",
|
|
47
|
+
"dc:contributor": [
|
|
48
|
+
{
|
|
49
|
+
"dc:contributor": "Maura Ryan",
|
|
50
|
+
"ms:role": "Research Director"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"dc:contributor": "Jean Porter",
|
|
54
|
+
"ms:role": "Committee Member"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"dc:contributor": "David Clairmont",
|
|
58
|
+
"ms:role": "Committee Member"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"dc:contributor": "Andrew S. Park",
|
|
62
|
+
"ms:role": "Committee Member"
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"ms:degree": {
|
|
66
|
+
"ms:name": [
|
|
67
|
+
"Doctor of Philosophy"
|
|
68
|
+
],
|
|
69
|
+
"ms:discipline": [
|
|
70
|
+
"Philosophy"
|
|
71
|
+
],
|
|
72
|
+
"ms:level": "Doctoral Dissertation"
|
|
73
|
+
},
|
|
74
|
+
"dc:creator": [
|
|
75
|
+
"Joungeun Lee"
|
|
76
|
+
],
|
|
77
|
+
"dc:dateSubmitted": "2016-02-18Z",
|
|
78
|
+
"dc:modified": "2016-02-19Z"
|
|
79
|
+
},
|
|
80
|
+
"rels-ext": {
|
|
81
|
+
"@context": {
|
|
82
|
+
"hydramata-rel": "http://projecthydra.org/ns/relations#"
|
|
83
|
+
},
|
|
84
|
+
"hydramata-rel:hasEditor": [
|
|
85
|
+
"und:qb98mc9021z"
|
|
86
|
+
],
|
|
87
|
+
"hydramata-rel:hasEditorGroup": [
|
|
88
|
+
"und:q524jm23g92"
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
"properties-meta": {
|
|
92
|
+
"mime-type": "text/xml"
|
|
93
|
+
},
|
|
94
|
+
"properties": "<fields><depositor>curate_batch_user</depositor><representative>und:rv042r3997b</representative></fields>"
|
|
95
|
+
}
|
|
96
|
+
]
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": {
|
|
3
|
+
"und": "https://curate.nd.edu/show/",
|
|
4
|
+
"bibo": "http://purl.org/ontology/bibo/",
|
|
5
|
+
"dc": "http://purl.org/dc/terms/",
|
|
6
|
+
"ebucore": "http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#",
|
|
7
|
+
"foaf": "http://xmlns.com/foaf/0.1/",
|
|
8
|
+
"mrel": "http://id.loc.gov/vocabulary/relators/",
|
|
9
|
+
"nd": "https://library.nd.edu/ns/terms/",
|
|
10
|
+
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
|
|
11
|
+
"vracore": "http://purl.org/vra/",
|
|
12
|
+
"frels": "info:fedora/fedora-system:def/relations-external#",
|
|
13
|
+
"ms": "http://www.ndltd.org/standards/metadata/etdms/1.1/",
|
|
14
|
+
"pav": "http://purl.org/pav/",
|
|
15
|
+
"fedora-model": "info:fedora/fedora-system:def/model#",
|
|
16
|
+
"hydra": "http://projecthydra.org/ns/relations#",
|
|
17
|
+
"hasModel": {
|
|
18
|
+
"@id": "fedora-model:hasModel",
|
|
19
|
+
"@type": "@id"
|
|
20
|
+
},
|
|
21
|
+
"hasEditor": {
|
|
22
|
+
"@id": "hydra:hasEditor",
|
|
23
|
+
"@type": "@id"
|
|
24
|
+
},
|
|
25
|
+
"hasEditorGroup": {
|
|
26
|
+
"@id": "hydra:hasEditorGroup",
|
|
27
|
+
"@type": "@id"
|
|
28
|
+
},
|
|
29
|
+
"isPartOf": {
|
|
30
|
+
"@id": "frels:isPartOf",
|
|
31
|
+
"@type": "@id"
|
|
32
|
+
},
|
|
33
|
+
"isMemberOfCollection": {
|
|
34
|
+
"@id": "frels:isMemberOfCollection",
|
|
35
|
+
"@type": "@id"
|
|
36
|
+
},
|
|
37
|
+
"isEditorOf": {
|
|
38
|
+
"@id": "hydra:isEditorOf",
|
|
39
|
+
"@type": "@id"
|
|
40
|
+
},
|
|
41
|
+
"hasMember": {
|
|
42
|
+
"@id": "frels:hasMember",
|
|
43
|
+
"@type": "@id"
|
|
44
|
+
},
|
|
45
|
+
"previousVersion": "pav:previousVersion"
|
|
46
|
+
},
|
|
47
|
+
"@graph": [{
|
|
48
|
+
"@id": "_:b0",
|
|
49
|
+
"dc:contributor": "Brad S. Gregory",
|
|
50
|
+
"ms:role": "Research Director"
|
|
51
|
+
}, {
|
|
52
|
+
"@id": "_:b1",
|
|
53
|
+
"dc:contributor": "John Van Engen",
|
|
54
|
+
"ms:role": "Committee Member"
|
|
55
|
+
}, {
|
|
56
|
+
"@id": "_:b2",
|
|
57
|
+
"dc:contributor": "Margaret Meserve",
|
|
58
|
+
"ms:role": "Committee Member"
|
|
59
|
+
}, {
|
|
60
|
+
"@id": "_:b3",
|
|
61
|
+
"dc:contributor": "Thomas Kselman",
|
|
62
|
+
"ms:role": "Committee Member"
|
|
63
|
+
}, {
|
|
64
|
+
"@id": "_:b4",
|
|
65
|
+
"ms:discipline": ["History"],
|
|
66
|
+
"ms:level": "Doctoral Dissertation",
|
|
67
|
+
"ms:name": "Doctor of Philosophy"
|
|
68
|
+
}, {
|
|
69
|
+
"@id": "und:2j62s467216",
|
|
70
|
+
"dc:contributor": [{
|
|
71
|
+
"@id": "_:b0"
|
|
72
|
+
}, {
|
|
73
|
+
"@id": "_:b1"
|
|
74
|
+
}, {
|
|
75
|
+
"@id": "_:b2"
|
|
76
|
+
}, {
|
|
77
|
+
"@id": "_:b3"
|
|
78
|
+
}],
|
|
79
|
+
"dc:creator": "Christopher J. Lane",
|
|
80
|
+
"dc:date": "2015-06-10",
|
|
81
|
+
"dc:date#approved": "",
|
|
82
|
+
"dc:date#created": "",
|
|
83
|
+
"dc:dateSubmitted": "2016-02-18Z",
|
|
84
|
+
"dc:description#note": "",
|
|
85
|
+
"dc:identifier#other": "",
|
|
86
|
+
"dc:modified": {
|
|
87
|
+
"@value": "2016-02-19Z",
|
|
88
|
+
"@type": "http://www.w3.org/2001/XMLSchema#date"
|
|
89
|
+
},
|
|
90
|
+
"dc:publisher#country": "",
|
|
91
|
+
"dc:rights": "All rights reserved",
|
|
92
|
+
"dc:title": "The Diversity of Vocations: Choosing a State of Life in Early Modern France",
|
|
93
|
+
"dc:title#alternate": "",
|
|
94
|
+
"hydra:hasEditor": {
|
|
95
|
+
"@id": "und:qb98mc9021z"
|
|
96
|
+
},
|
|
97
|
+
"hydra:hasEditorGroup": {
|
|
98
|
+
"@id": "und:q524jm23g92"
|
|
99
|
+
},
|
|
100
|
+
"ms:degree": {
|
|
101
|
+
"@id": "_:b4"
|
|
102
|
+
},
|
|
103
|
+
"nd:accessEmbargoDate": "2021-12-31",
|
|
104
|
+
"nd:accessEdit": "curate_batch_user",
|
|
105
|
+
"nd:accessRead": "clane",
|
|
106
|
+
"nd:accessReadGroup": "public",
|
|
107
|
+
"nd:afmodel": "Etd",
|
|
108
|
+
"nd:depositor": "curate_batch_user",
|
|
109
|
+
"nd:representativeFile": {
|
|
110
|
+
"@id": "und:47429882s8w"
|
|
111
|
+
}
|
|
112
|
+
}]
|
|
113
|
+
}
|