cocina-models 0.7.0 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d545662f72b0cc61f2d380d2a659b5eceedd07261e3bbcbf093748bb83313921
4
- data.tar.gz: 0e7dfe39087cf1550e6d5ec421cfc19247e1345dc1ccc6789936a11b5f48f143
3
+ metadata.gz: 2e7900ad5ccfc3731276f0fbe6e27d77094b72b309e461206c46f41ff9b9a09d
4
+ data.tar.gz: d5b1fbbd90d37daa1ac3538be417ae5ea61a8c7ec130ddbae842bb6d541fa806
5
5
  SHA512:
6
- metadata.gz: 87e6e541b2de60c90a0a788367cef62a1c3d55ab8f2bbf687fd85a1198a025e81fe2ccd258a1cc59ce5bbcaa1dbfe3020aa8c687cba29d813af5e9df09df9c97
7
- data.tar.gz: b35a5fecfbcef1376ca2d61d7b046787814c6a0a106fa4625fff4c6c024dab56803426f5253e36bfd2ed9723c6ea8363480ee88323ba74efce436d00cbf41509
6
+ metadata.gz: fdc52de4683d5e72207fe93902ecf207b2dea375be47d32599f69d2b11b9147cb27287032f6d1d7e87af991471c0680c23cc59927baa70cc62cc04cfb03ff8c3
7
+ data.tar.gz: 173b81c88469efcc665af88943389a155e4c98f5de726c5087c8f44e59e313a26f5f3be22848d65ffdb269337ef987b91be328a2fd7107e1ccc16c5637b750de
@@ -0,0 +1,5 @@
1
+ ## Why was this change made?
2
+
3
+
4
+
5
+ ## Was the documentation (README, wiki) updated?
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2019-10-24 15:36:09 -0500 using RuboCop version 0.74.0.
3
+ # on 2020-01-13 15:35:17 -0800 using RuboCop version 0.74.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -10,11 +10,6 @@
10
10
  Metrics/AbcSize:
11
11
  Max: 18
12
12
 
13
- # Offense count: 1
14
- # Configuration parameters: CountComments, ExcludedMethods.
15
- Metrics/MethodLength:
16
- Max: 14
17
-
18
13
  # Offense count: 2
19
14
  # Configuration parameters: Max.
20
15
  RSpec/ExampleLength:
data/.travis.yml CHANGED
@@ -4,8 +4,20 @@ language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
6
  - 2.5.3
7
- before_install: gem install bundler -v 2.0.1
7
+ - 2.6.4
8
+ before_install: gem install bundler -v 2.1.4
8
9
 
9
- script:
10
- - bundle exec rspec
11
- - bundle exec rubocop
10
+ before_script:
11
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
12
+ - chmod +x ./cc-test-reporter
13
+ - ./cc-test-reporter before-build
14
+
15
+ after_script:
16
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
17
+
18
+ notifications:
19
+ email: false
20
+
21
+ env:
22
+ global:
23
+ - CC_TEST_REPORTER_ID=882e943342bed5285a6078be9a41b7738ae7ebd17458c08414581cbece99b8e6
data/README.md CHANGED
@@ -1,7 +1,12 @@
1
+ [![Build Status](https://travis-ci.com/sul-dlss/cocina-models.svg?branch=master)](https://travis-ci.com/sul-dlss/cocina-models)
2
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/472273351516ac01dce1/test_coverage)](https://codeclimate.com/github/sul-dlss/cocina-models/test_coverage)
3
+ [![Maintainability](https://api.codeclimate.com/v1/badges/472273351516ac01dce1/maintainability)](https://codeclimate.com/github/sul-dlss/cocina-models/maintainability)
1
4
  [![Gem Version](https://badge.fury.io/rb/cocina-models.svg)](https://badge.fury.io/rb/cocina-models)
2
5
 
3
6
  # Cocina::Models
4
7
 
5
8
  This is a Ruby implementation of the SDR data model (named "COCINA"). The data being modeled includes digital repository objects.
6
9
 
10
+ It provides a way for consumers to validate objects against models using dry-struct and dry-types gems.
11
+
7
12
  This is a work in progress that will ultimately implement the full [COCINA data model](http://sul-dlss.github.io/cocina-models/). See also [architecture documentation](https://sul-dlss.github.io/taco-truck/COCINA.html#cocina-data-models--shapes).
data/Rakefile CHANGED
@@ -2,7 +2,10 @@
2
2
 
3
3
  require 'bundler/gem_tasks'
4
4
  require 'rspec/core/rake_task'
5
+ require 'rubocop/rake_task'
5
6
 
7
+ RuboCop::RakeTask.new
6
8
  RSpec::Core::RakeTask.new(:spec)
7
9
 
8
- task default: :spec
10
+ desc 'Run linter and tests'
11
+ task default: %i[rubocop spec]
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
 
13
13
  spec.summary = 'Data models for the SDR'
14
14
  spec.description = 'SDR data models that can be validated'
15
- spec.homepage = 'https://github.com/sul-dlss-labs/cocina-models'
15
+ spec.homepage = 'https://github.com/sul-dlss/cocina-models'
16
16
 
17
17
  # Specify which files should be added to the gem when it is released.
18
18
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -32,4 +32,5 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency 'rspec', '~> 3.0'
33
33
  spec.add_development_dependency 'rubocop', '~> 0.74.0'
34
34
  spec.add_development_dependency 'rubocop-rspec'
35
+ spec.add_development_dependency 'simplecov'
35
36
  end
@@ -0,0 +1,24 @@
1
+ {
2
+ "@context": {
3
+ "type": "@type",
4
+ "id": "@id",
5
+ "@vocab": "http://cocina.sul.stanford.edu/contexts/cocina-base.jsonld",
6
+ "cocina": "http://cocina.sul.stanford.edu/models/",
7
+ "Book": {"@id": "cocina:Book"}
8
+ "3D": {"@id": "cocina:3D"}
9
+ "Agreement": {"@id": "cocina:Agreement"}
10
+ "Document": {"@id": "cocina:Document"}
11
+ "Collection": {"@id": "cocina:Collection"}
12
+ "Fileset": {"@id": "cocina:Fileset"}
13
+ "Geo": {"@id": "cocina:Geo"}
14
+ "Image": {"@id": "cocina:Image"}
15
+ "Page": {"@id": "cocina:Page"}
16
+ "Photograph": {"@id": "cocina:Photograph"}
17
+ "Manuscript": {"@id": "cocina:Manuscript"}
18
+ "Map": {"@id": "cocina:Map"}
19
+ "Media": {"@id": "cocina:Media"}
20
+ "Track": {"@id": "cocina:Track"}
21
+ "WebarchiveBinary": {"@id": "cocina:WebarchiveBinary"}
22
+ "WebarchiveSeed": {"@id": "cocina:WebarchiveSeed"}
23
+ }
24
+ }
data/docs/maps/File.json CHANGED
@@ -144,6 +144,10 @@
144
144
  "description": "If this resource should be sent to Preservation.",
145
145
  "type": "boolean"
146
146
  },
147
+ "shelve": {
148
+ "description": "If this resource should be sent to Stacks.",
149
+ "type": "boolean"
150
+ },
147
151
  "remediatedBy": {
148
152
  "description": "The Agent (User, Group, Application, Department, other) that remediated this File in SDR.",
149
153
  "type": "array",
@@ -6,7 +6,9 @@ module Cocina
6
6
  module Models
7
7
  # An admin policy object.
8
8
  class AdminPolicy < Dry::Struct
9
- TYPES = %w[http://cocina.sul.stanford.edu/models/admin_policy.jsonld].freeze
9
+ TYPES = [
10
+ Vocab.admin_policy
11
+ ].freeze
10
12
 
11
13
  # Subschema for access concerns
12
14
  class Access < Dry::Struct
@@ -6,11 +6,13 @@ module Cocina
6
6
  module Models
7
7
  # A digital repository collection. See http://sul-dlss.github.io/cocina-models/maps/Collection.json
8
8
  class Collection < Dry::Struct
9
- TYPES = %w[http://cocina.sul.stanford.edu/models/collection.jsonld
10
- http://cocina.sul.stanford.edu/models/curated-collection.jsonld
11
- http://cocina.sul.stanford.edu/models/user-collection.jsonld
12
- http://cocina.sul.stanford.edu/models/exhibit.jsonld
13
- http://cocina.sul.stanford.edu/models/series.jsonld].freeze
9
+ TYPES = [
10
+ Vocab.collection,
11
+ Vocab.curated_collection,
12
+ Vocab.user_collection,
13
+ Vocab.exhibit,
14
+ Vocab.series
15
+ ].freeze
14
16
 
15
17
  # Subschema for access concerns
16
18
  class Access < Dry::Struct
@@ -6,23 +6,24 @@ module Cocina
6
6
  module Models
7
7
  # A digital repository object. See http://sul-dlss.github.io/cocina-models/maps/DRO.json
8
8
  class DRO < Dry::Struct
9
- TYPES = %w[
10
- http://cocina.sul.stanford.edu/models/object.jsonld
11
- http://cocina.sul.stanford.edu/models/3d.jsonld
12
- http://cocina.sul.stanford.edu/models/agreement.jsonl
13
- http://cocina.sul.stanford.edu/models/book.jsonld
14
- http://cocina.sul.stanford.edu/models/document.jsonld
15
- http://cocina.sul.stanford.edu/models/geo.jsonld
16
- http://cocina.sul.stanford.edu/models/image.jsonld
17
- http://cocina.sul.stanford.edu/models/page.jsonld
18
- http://cocina.sul.stanford.edu/models/photograph.jsonld
19
- http://cocina.sul.stanford.edu/models/manuscript.jsonld
20
- http://cocina.sul.stanford.edu/models/map.jsonld
21
- http://cocina.sul.stanford.edu/models/media.jsonld
22
- http://cocina.sul.stanford.edu/models/track.jsonld
23
- http://cocina.sul.stanford.edu/models/webarchive-binary.jsonld
24
- http://cocina.sul.stanford.edu/models/webarchive-seed.jsonld
9
+ TYPES = [
10
+ Vocab.object,
11
+ Vocab.three_dimensional,
12
+ Vocab.agreement,
13
+ Vocab.book,
14
+ Vocab.document,
15
+ Vocab.geo,
16
+ Vocab.image,
17
+ Vocab.page,
18
+ Vocab.photograph,
19
+ Vocab.manuscript,
20
+ Vocab.map,
21
+ Vocab.media,
22
+ Vocab.track,
23
+ Vocab.webarchive_binary,
24
+ Vocab.webarchive_seed
25
25
  ].freeze
26
+
26
27
  # Subschema for release tags
27
28
  class ReleaseTag < Dry::Struct
28
29
  attribute :to, Types::Strict::String
@@ -104,6 +105,10 @@ module Cocina
104
105
  def self.from_json(json)
105
106
  from_dynamic(JSON.parse(json))
106
107
  end
108
+
109
+ def image?
110
+ type == Vocab.image
111
+ end
107
112
  end
108
113
  end
109
114
  end
@@ -6,8 +6,8 @@ module Cocina
6
6
  module Models
7
7
  # Metadata for a file. See http://sul-dlss.github.io/cocina-models/maps/File.json
8
8
  class File < Dry::Struct
9
- TYPES = %w[
10
- http://cocina.sul.stanford.edu/models/file.jsonld
9
+ TYPES = [
10
+ Vocab.file
11
11
  ].freeze
12
12
 
13
13
  class Identification < Dry::Struct
@@ -6,8 +6,8 @@ module Cocina
6
6
  module Models
7
7
  # Metadata for a File Set. See http://sul-dlss.github.io/cocina-models/maps/Fileset.json
8
8
  class FileSet < Dry::Struct
9
- TYPES = %w[
10
- http://cocina.sul.stanford.edu/models/fileset.jsonld
9
+ TYPES = [
10
+ Vocab.fileset
11
11
  ].freeze
12
12
 
13
13
  class Identification < Dry::Struct
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Cocina
4
4
  module Models
5
- VERSION = '0.7.0'
5
+ VERSION = '0.8.0'
6
6
  end
7
7
  end
@@ -0,0 +1,115 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cocina
4
+ module Models
5
+ # A digital repository object. See http://sul-dlss.github.io/cocina-models/maps/DRO.json
6
+ class Vocab
7
+ ROOT = 'http://cocina.sul.stanford.edu/models/'
8
+
9
+ ### Object types ###
10
+
11
+ # This is the most generic type
12
+ def self.object
13
+ "#{ROOT}object.jsonld"
14
+ end
15
+
16
+ def self.agreement
17
+ "#{ROOT}agreement.jsonld"
18
+ end
19
+
20
+ def self.document
21
+ "#{ROOT}document.jsonld"
22
+ end
23
+
24
+ def self.geo
25
+ "#{ROOT}geo.jsonld"
26
+ end
27
+
28
+ def self.page
29
+ "#{ROOT}page.jsonld"
30
+ end
31
+
32
+ def self.photograph
33
+ "#{ROOT}photograph.jsonld"
34
+ end
35
+
36
+ def self.manuscript
37
+ "#{ROOT}manuscript.jsonld"
38
+ end
39
+
40
+ def self.map
41
+ "#{ROOT}map.jsonld"
42
+ end
43
+
44
+ def self.track
45
+ "#{ROOT}track.jsonld"
46
+ end
47
+
48
+ def self.webarchive_binary
49
+ "#{ROOT}webarchive-binary.jsonld"
50
+ end
51
+
52
+ def self.webarchive_seed
53
+ "#{ROOT}webarchive-seed.jsonld"
54
+ end
55
+
56
+ # For time based media
57
+ def self.media
58
+ "#{ROOT}media.jsonld"
59
+ end
60
+
61
+ def self.image
62
+ "#{ROOT}image.jsonld"
63
+ end
64
+
65
+ def self.book
66
+ "#{ROOT}book.jsonld"
67
+ end
68
+
69
+ def self.three_dimensional
70
+ "#{ROOT}3d.jsonld"
71
+ end
72
+
73
+ ### File type ###
74
+
75
+ def self.file
76
+ "#{ROOT}file.jsonld"
77
+ end
78
+
79
+ ### Fileset type ###
80
+
81
+ def self.fileset
82
+ "#{ROOT}fileset.jsonld"
83
+ end
84
+
85
+ ### Collection types ###
86
+
87
+ # The most generic type of collection
88
+ def self.collection
89
+ "#{ROOT}collection.jsonld"
90
+ end
91
+
92
+ def self.curated_collection
93
+ "#{ROOT}curated-collection.jsonld"
94
+ end
95
+
96
+ def self.user_collection
97
+ "#{ROOT}user-collection.jsonld"
98
+ end
99
+
100
+ def self.exhibit
101
+ "#{ROOT}exhibit.jsonld"
102
+ end
103
+
104
+ def self.series
105
+ "#{ROOT}series.jsonld"
106
+ end
107
+
108
+ ### Admin Policy type ###
109
+
110
+ def self.admin_policy
111
+ "#{ROOT}admin_policy.jsonld"
112
+ end
113
+ end
114
+ end
115
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocina-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-28 00:00:00.000000000 Z
11
+ date: 2020-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-struct
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  description: SDR data models that can be validated
126
140
  email:
127
141
  - jcoyne@justincoyne.com
@@ -129,6 +143,7 @@ executables: []
129
143
  extensions: []
130
144
  extra_rdoc_files: []
131
145
  files:
146
+ - ".github/pull_request_template.md"
132
147
  - ".gitignore"
133
148
  - ".rspec"
134
149
  - ".rubocop.yml"
@@ -142,6 +157,7 @@ files:
142
157
  - cocina-models.gemspec
143
158
  - docs/README.md
144
159
  - docs/_config.yml
160
+ - docs/cocina-base.jsonld
145
161
  - docs/maps/Agent.json
146
162
  - docs/maps/Collection.json
147
163
  - docs/maps/DRO.json
@@ -161,7 +177,8 @@ files:
161
177
  - lib/cocina/models/file_set.rb
162
178
  - lib/cocina/models/types.rb
163
179
  - lib/cocina/models/version.rb
164
- homepage: https://github.com/sul-dlss-labs/cocina-models
180
+ - lib/cocina/models/vocab.rb
181
+ homepage: https://github.com/sul-dlss/cocina-models
165
182
  licenses: []
166
183
  metadata: {}
167
184
  post_install_message:
@@ -179,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
196
  - !ruby/object:Gem::Version
180
197
  version: '0'
181
198
  requirements: []
182
- rubygems_version: 3.0.3
199
+ rubygems_version: 3.0.6
183
200
  signing_key:
184
201
  specification_version: 4
185
202
  summary: Data models for the SDR