locabulary 0.1.8 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,130 +1,99 @@
1
1
  {
2
+ "predicate_name": "organization",
2
3
  "values": [{
3
- "predicate_name": "organization",
4
4
  "term_label": "Aerospace and Mechanical Engineering",
5
5
  "activated_on": "2015-01-01"
6
6
  },{
7
- "predicate_name": "organization",
8
7
  "term_label": "Anthropology",
9
8
  "activated_on": "2015-01-01"
10
9
  },{
11
- "predicate_name": "organization",
12
10
  "term_label": "Applied and Computational Mathematics and Statistics",
13
11
  "activated_on": "2015-01-01"
14
12
  },{
15
- "predicate_name": "organization",
16
13
  "term_label": "Art, Art History, and Design",
17
14
  "activated_on": "2015-01-01"
18
15
  },{
19
- "predicate_name": "organization",
20
16
  "term_label": "Bioengineering",
21
17
  "activated_on": "2015-01-01"
22
18
  },{
23
- "predicate_name": "organization",
24
19
  "term_label": "Biological Sciences",
25
20
  "activated_on": "2015-01-01"
26
21
  },{
27
- "predicate_name": "organization",
28
22
  "term_label": "Chemical and Biomolecular Engineering",
29
23
  "activated_on": "2015-01-01"
30
24
  },{
31
- "predicate_name": "organization",
32
25
  "term_label": "Chemistry and Biochemistry",
33
26
  "activated_on": "2015-01-01"
34
27
  },{
35
- "predicate_name": "organization",
36
28
  "term_label": "Civil and Environmental Engineering and Earth Sciences",
37
29
  "activated_on": "2015-01-01"
38
30
  },{
39
- "predicate_name": "organization",
40
31
  "term_label": "Classics",
41
32
  "activated_on": "2015-01-01"
42
33
  },{
43
- "predicate_name": "organization",
44
34
  "term_label": "Computer Science and Engineering",
45
35
  "activated_on": "2015-01-01"
46
36
  },{
47
- "predicate_name": "organization",
48
37
  "term_label": "Creative Writing",
49
38
  "activated_on": "2015-01-01"
50
39
  },{
51
- "predicate_name": "organization",
52
40
  "term_label": "Early Christian Studies",
53
41
  "activated_on": "2015-01-01"
54
42
  },{
55
- "predicate_name": "organization",
56
43
  "term_label": "Economics",
57
44
  "activated_on": "2015-01-01"
58
45
  },{
59
- "predicate_name": "organization",
60
46
  "term_label": "Electrical Engineering",
61
47
  "activated_on": "2015-01-01"
62
48
  },{
63
- "predicate_name": "organization",
64
49
  "term_label": "English",
65
50
  "activated_on": "2015-01-01"
66
51
  },{
67
- "predicate_name": "organization",
68
52
  "term_label": "History",
69
53
  "activated_on": "2015-01-01"
70
54
  },{
71
- "predicate_name": "organization",
72
55
  "term_label": "History and Philosophy of Science",
73
56
  "activated_on": "2015-01-01"
74
57
  },{
75
- "predicate_name": "organization",
76
58
  "term_label": "Integrated Biomedical Sciences",
77
59
  "activated_on": "2015-01-01"
78
60
  },{
79
- "predicate_name": "organization",
80
61
  "term_label": "Law",
81
62
  "activated_on": "2015-01-01"
82
63
  },{
83
- "predicate_name": "organization",
84
64
  "term_label": "Literature",
85
65
  "activated_on": "2015-01-01"
86
66
  },{
87
- "predicate_name": "organization",
88
67
  "term_label": "Mathematics",
89
68
  "activated_on": "2015-01-01"
90
69
  },{
91
- "predicate_name": "organization",
92
70
  "term_label": "Medieval Studies",
93
71
  "activated_on": "2015-01-01"
94
72
  },{
95
- "predicate_name": "organization",
96
73
  "term_label": "Peace Studies",
97
74
  "activated_on": "2015-01-01"
98
75
  },{
99
- "predicate_name": "organization",
100
76
  "term_label": "Philosophy",
101
77
  "activated_on": "2015-01-01"
102
78
  },{
103
- "predicate_name": "organization",
104
79
  "term_label": "Physics",
105
80
  "activated_on": "2015-01-01"
106
81
  },{
107
- "predicate_name": "organization",
108
82
  "term_label": "Political Science",
109
83
  "activated_on": "2015-01-01"
110
84
  },{
111
- "predicate_name": "organization",
112
85
  "term_label": "Psychology",
113
86
  "activated_on": "2015-01-01"
114
87
  },{
115
- "predicate_name": "organization",
116
88
  "term_label": "Romance Languages and Literatures",
117
89
  "activated_on": "2015-01-01"
118
90
  },{
119
- "predicate_name": "organization",
120
91
  "term_label": "Sacred Music",
121
92
  "activated_on": "2015-01-01"
122
93
  },{
123
- "predicate_name": "organization",
124
94
  "term_label": "Sociology",
125
95
  "activated_on": "2015-01-01"
126
96
  },{
127
- "predicate_name": "organization",
128
97
  "term_label": "Theology",
129
98
  "activated_on": "2015-01-01"
130
99
  }]
@@ -1,126 +1,96 @@
1
1
  {
2
+ "predicate_name": "program_name",
2
3
  "values": [{
3
- "predicate_name": "program_name",
4
4
  "term_label": "Aerospace and Mechanical Engineering",
5
5
  "activated_on": "2015-01-01"
6
6
  },{
7
- "predicate_name": "program_name",
8
7
  "term_label": "Anthropology",
9
8
  "activated_on": "2015-01-01"
10
9
  },{
11
- "predicate_name": "program_name",
12
10
  "term_label": "Applied and Computational Mathematics and Statistics",
13
11
  "activated_on": "2015-01-01"
14
12
  },{
15
- "predicate_name": "program_name",
16
13
  "term_label": "Art, Art History, and Design",
17
14
  "activated_on": "2015-01-01"
18
15
  },{
19
- "predicate_name": "program_name",
20
16
  "term_label": "Bioengineering",
21
17
  "activated_on": "2015-01-01"
22
18
  },{
23
- "predicate_name": "program_name",
24
19
  "term_label": "Biological Sciences",
25
20
  "activated_on": "2015-01-01"
26
21
  },{
27
- "predicate_name": "program_name",
28
22
  "term_label": "Chemical and Biomolecular Engineering",
29
23
  "activated_on": "2015-01-01"
30
24
  },{
31
- "predicate_name": "program_name",
32
25
  "term_label": "Chemistry and Biochemistry",
33
26
  "activated_on": "2015-01-01"
34
27
  },{
35
- "predicate_name": "program_name",
36
28
  "term_label": "Civil and Environmental Engineering and Earth Sciences",
37
29
  "activated_on": "2015-01-01"
38
30
  },{
39
- "predicate_name": "program_name",
40
31
  "term_label": "Classics",
41
32
  "activated_on": "2015-01-01"
42
33
  },{
43
- "predicate_name": "program_name",
44
34
  "term_label": "Computer Science and Engineering",
45
35
  "activated_on": "2015-01-01"
46
36
  },{
47
- "predicate_name": "program_name",
48
37
  "term_label": "Creative Writing",
49
38
  "activated_on": "2015-01-01"
50
39
  },{
51
- "predicate_name": "program_name",
52
40
  "term_label": "Early Christian Studies",
53
41
  "activated_on": "2015-01-01"
54
42
  },{
55
- "predicate_name": "program_name",
56
43
  "term_label": "Economics",
57
44
  "activated_on": "2015-01-01"
58
45
  },{
59
- "predicate_name": "program_name",
60
46
  "term_label": "Electrical Engineering",
61
47
  "activated_on": "2015-01-01"
62
48
  },{
63
- "predicate_name": "program_name",
64
49
  "term_label": "English",
65
50
  "activated_on": "2015-01-01"
66
51
  },{
67
- "predicate_name": "program_name",
68
52
  "term_label": "History",
69
53
  "activated_on": "2015-01-01"
70
54
  },{
71
- "predicate_name": "program_name",
72
55
  "term_label": "History and Philosophy of Science",
73
56
  "activated_on": "2015-01-01"
74
57
  },{
75
- "predicate_name": "program_name",
76
58
  "term_label": "Integrated Biomedical Sciences",
77
59
  "activated_on": "2015-01-01"
78
60
  },{
79
- "predicate_name": "program_name",
80
61
  "term_label": "Literature",
81
62
  "activated_on": "2015-01-01"
82
63
  },{
83
- "predicate_name": "program_name",
84
64
  "term_label": "Mathematics",
85
65
  "activated_on": "2015-01-01"
86
66
  },{
87
- "predicate_name": "program_name",
88
67
  "term_label": "Medieval Studies",
89
68
  "activated_on": "2015-01-01"
90
69
  },{
91
- "predicate_name": "program_name",
92
70
  "term_label": "Peace Studies",
93
71
  "activated_on": "2015-01-01"
94
72
  },{
95
- "predicate_name": "program_name",
96
73
  "term_label": "Philosophy",
97
74
  "activated_on": "2015-01-01"
98
75
  },{
99
- "predicate_name": "program_name",
100
76
  "term_label": "Physics",
101
77
  "activated_on": "2015-01-01"
102
78
  },{
103
- "predicate_name": "program_name",
104
79
  "term_label": "Political Science",
105
80
  "activated_on": "2015-01-01"
106
81
  },{
107
- "predicate_name": "program_name",
108
82
  "term_label": "Psychology",
109
83
  "activated_on": "2015-01-01"
110
84
  },{
111
- "predicate_name": "program_name",
112
85
  "term_label": "Romance Languages and Literatures",
113
86
  "activated_on": "2015-01-01"
114
87
  },{
115
- "predicate_name": "program_name",
116
88
  "term_label": "Sacred Music",
117
89
  "activated_on": "2015-01-01"
118
90
  },{
119
- "predicate_name": "program_name",
120
91
  "term_label": "Sociology",
121
92
  "activated_on": "2015-01-01"
122
93
  },{
123
- "predicate_name": "program_name",
124
94
  "term_label": "Theology",
125
95
  "activated_on": "2015-01-01"
126
96
  }]
@@ -1,33 +1,158 @@
1
1
  {
2
+ "predicate_name": "resource_consulted",
2
3
  "values": [{
3
- "predicate_name": "resource_consulted",
4
+ "term_label": "People::Consultation with a subject librarian",
5
+ "default_presentation_sequence": 100,
6
+ "activated_on": "2016-01-01"
7
+ }, {
8
+ "term_label": "People::LINk Program librarian",
9
+ "default_presentation_sequence": 100,
10
+ "activated_on": "2016-01-01"
11
+ }, {
12
+ "term_label": "People::Research Help Desk services (in person, on phone, via email)",
13
+ "default_presentation_sequence": 100,
14
+ "activated_on": "2016-01-01"
15
+ }, {
16
+ "term_label": "Places::Archives",
17
+ "default_presentation_sequence": 200,
18
+ "activated_on": "2016-01-01"
19
+ }, {
20
+ "term_label": "Places::Center for Digital Scholarship",
21
+ "default_presentation_sequence": 200,
22
+ "activated_on": "2016-01-01"
23
+ }, {
24
+ "term_label": "Places::Branch Libraries",
25
+ "default_presentation_sequence": 200,
26
+ "activated_on": "2016-01-01"
27
+ }, {
28
+ "term_label": "Places::Multimedia spaces",
29
+ "default_presentation_sequence": 200,
30
+ "activated_on": "2016-01-01"
31
+ }, {
32
+ "term_label": "Places::Medieval Institute",
33
+ "default_presentation_sequence": 200,
34
+ "activated_on": "2016-01-01"
35
+ }, {
36
+ "term_label": "Places::Music & Media Services Unit",
37
+ "default_presentation_sequence": 200,
38
+ "activated_on": "2016-01-01"
39
+ }, {
40
+ "term_label": "Places::Rare Books and Special Collections",
41
+ "default_presentation_sequence": 200,
42
+ "activated_on": "2016-01-01"
43
+ }, {
44
+ "term_label": "Online Resources::CurateND",
45
+ "default_presentation_sequence": 300,
46
+ "activated_on": "2016-01-01"
47
+ }, {
48
+ "term_label": "Online Resources::Databases accessed via Hesburgh Libraries web site",
49
+ "default_presentation_sequence": 300,
50
+ "activated_on": "2016-01-01"
51
+ }, {
52
+ "term_label": "Online Resources::Data sets accessed via Hesburgh Libraries web site",
53
+ "default_presentation_sequence": 300,
54
+ "activated_on": "2016-01-01"
55
+ }, {
56
+ "term_label": "Online Resources::LibGuide online research guides",
57
+ "default_presentation_sequence": 300,
58
+ "activated_on": "2016-01-01"
59
+ }, {
60
+ "term_label": "Online Resources::Online chat via Hesburgh Libraries web site",
61
+ "default_presentation_sequence": 300,
62
+ "activated_on": "2016-01-01"
63
+ }, {
64
+ "term_label": "Online Resources::Remix",
65
+ "default_presentation_sequence": 300,
66
+ "activated_on": "2016-01-01"
67
+ }, {
68
+ "term_label": "Other Library Resources::Digitization and images resources",
69
+ "default_presentation_sequence": 400,
70
+ "activated_on": "2016-01-01"
71
+ }, {
72
+ "term_label": "Other Library Resources::Government information/statistics",
73
+ "default_presentation_sequence": 400,
74
+ "activated_on": "2016-01-01"
75
+ }, {
76
+ "term_label": "Other Library Resources::Inter-Library Loan services",
77
+ "default_presentation_sequence": 400,
78
+ "activated_on": "2016-01-01"
79
+ }, {
80
+ "term_label": "Other Library Resources::Workshop(s)/camps",
81
+ "default_presentation_sequence": 400,
82
+ "activated_on": "2016-01-01"
83
+ }, {
84
+ "term_label": "External Resources::Archives - domestic",
85
+ "default_presentation_sequence": 500,
86
+ "activated_on": "2016-01-01"
87
+ }, {
88
+ "term_label": "External Resources::Archives - international",
89
+ "default_presentation_sequence": 500,
90
+ "activated_on": "2016-01-01"
91
+ }, {
92
+ "term_label": "External Resources::Archives - digital",
93
+ "default_presentation_sequence": 500,
94
+ "activated_on": "2016-01-01"
95
+ }, {
96
+ "term_label": "External Resources::Consultation with a librarian - domestic",
97
+ "default_presentation_sequence": 500,
98
+ "activated_on": "2016-01-01"
99
+ }, {
100
+ "term_label": "External Resources::Consultation with a librarian - international",
101
+ "default_presentation_sequence": 500,
102
+ "activated_on": "2016-01-01"
103
+ }, {
104
+ "term_label": "External Resources::Consultation with a librarian - digital",
105
+ "default_presentation_sequence": 500,
106
+ "activated_on": "2016-01-01"
107
+ }, {
108
+ "term_label": "External Resources::Library - domestic",
109
+ "default_presentation_sequence": 500,
110
+ "activated_on": "2016-01-01"
111
+ }, {
112
+ "term_label": "External Resources::Library - international",
113
+ "default_presentation_sequence": 500,
114
+ "activated_on": "2016-01-01"
115
+ }, {
116
+ "term_label": "External Resources::Library - digital",
117
+ "default_presentation_sequence": 500,
118
+ "activated_on": "2016-01-01"
119
+ }, {
120
+ "term_label": "External Resources::Web sites or other internet research sources",
121
+ "default_presentation_sequence": 500,
122
+ "activated_on": "2016-01-01"
123
+ }, {
124
+ "term_label": "External Resources::Workshops",
125
+ "default_presentation_sequence": 500,
126
+ "activated_on": "2016-01-01"
127
+ }, {
4
128
  "term_label": "Consultation with a librarian",
5
129
  "term_uri": "Consultation with a librarian",
6
- "activated_on": "2015-01-01"
130
+ "activated_on": "2015-01-01",
131
+ "deactivated_on": "2015-12-31"
7
132
  },{
8
- "predicate_name": "resource_consulted",
9
133
  "term_label": "Databases accessed via Hesburgh Libraries",
10
134
  "term_uri": "Databases accessed via Hesburgh Libraries",
11
- "activated_on": "2015-01-01"
135
+ "activated_on": "2015-01-01",
136
+ "deactivated_on": "2015-12-31"
12
137
  },{
13
- "predicate_name": "resource_consulted",
14
138
  "term_label": "Electronic journals",
15
139
  "term_uri": "Electronic journals",
16
- "activated_on": "2015-01-01"
140
+ "activated_on": "2015-01-01",
141
+ "deactivated_on": "2015-12-31"
17
142
  },{
18
- "predicate_name": "resource_consulted",
19
143
  "term_label": "Hesburgh Libraries Rare Books and Special Collections and/or Archives",
20
144
  "term_uri": "Hesburgh Libraries Rare Books and Special Collections and/or Archives",
21
- "activated_on": "2015-01-01"
145
+ "activated_on": "2015-01-01",
146
+ "deactivated_on": "2015-12-31"
22
147
  },{
23
- "predicate_name": "resource_consulted",
24
148
  "term_label": "Print sources",
25
149
  "term_uri": "Print sources",
26
- "activated_on": "2015-01-01"
150
+ "activated_on": "2015-01-01",
151
+ "deactivated_on": "2015-12-31"
27
152
  },{
28
- "predicate_name": "resource_consulted",
29
153
  "term_label": "Web sites or other internet research sources",
30
154
  "term_uri": "Web sites or other internet research sources",
31
- "activated_on": "2015-01-01"
155
+ "activated_on": "2015-01-01",
156
+ "deactivated_on": "2015-12-31"
32
157
  }]
33
158
  }
@@ -1,21 +1,22 @@
1
1
  {
2
+ "predicate_name": "underclass_level",
2
3
  "values": [{
3
- "predicate_name": "underclass_level",
4
4
  "term_label": "First Year",
5
5
  "default_presentation_sequence": 1,
6
6
  "activated_on": "2015-01-01"
7
7
  },{
8
- "predicate_name": "underclass_level",
9
8
  "term_label": "Sophomore",
10
9
  "default_presentation_sequence": 2,
11
10
  "activated_on": "2015-01-01"
12
11
  },{
13
- "predicate_name": "underclass_level",
14
12
  "term_label": "Junior",
15
13
  "default_presentation_sequence": 3,
16
14
  "activated_on": "2015-01-01"
17
15
  },{
18
- "predicate_name": "underclass_level",
16
+ "term_label": "Junior",
17
+ "default_presentation_sequence": 4,
18
+ "activated_on": "2015-01-01"
19
+ },{
19
20
  "term_label": "5th Year",
20
21
  "default_presentation_sequence": 5,
21
22
  "activated_on": "2015-01-01"
@@ -1,33 +1,28 @@
1
1
  {
2
+ "predicate_name": "work_patent_strategy",
2
3
  "values": [{
3
- "predicate_name": "work_patent_strategy",
4
4
  "term_label": "going_to_patent",
5
5
  "default_presentation_sequence": 1,
6
6
  "activated_on": "2015-01-01"
7
7
  },{
8
- "predicate_name": "work_patent_strategy",
9
8
  "term_label": "will_not_patent",
10
9
  "default_presentation_sequence": 2,
11
10
  "activated_on": "2015-01-01"
12
11
  },{
13
- "predicate_name": "work_patent_strategy",
14
12
  "term_label": "already_patented",
15
13
  "default_presentation_sequence": 3,
16
14
  "activated_on": "2015-01-01",
17
15
  "deactivated_on": "2015-07-06"
18
16
  },{
19
- "predicate_name": "work_patent_strategy",
20
17
  "term_label": "do_not_know",
21
18
  "default_presentation_sequence": 4,
22
19
  "activated_on": "2015-01-01",
23
20
  "deactivated_on": "2015-07-06"
24
21
  },{
25
- "predicate_name": "work_patent_strategy",
26
22
  "term_label": "non_provisional_patent_filed",
27
23
  "default_presentation_sequence": 5,
28
24
  "activated_on": "2015-07-06"
29
25
  },{
30
- "predicate_name": "work_patent_strategy",
31
26
  "term_label": "material_already_published",
32
27
  "default_presentation_sequence": 6,
33
28
  "activated_on": "2015-07-06"
@@ -1,21 +1,18 @@
1
1
  {
2
+ "predicate_name": "work_publication_strategy",
2
3
  "values": [{
3
- "predicate_name": "work_publication_strategy",
4
4
  "term_label": "going_to_publish",
5
5
  "default_presentation_sequence": 1,
6
6
  "activated_on": "2015-01-01"
7
7
  },{
8
- "predicate_name": "work_publication_strategy",
9
8
  "term_label": "will_not_publish",
10
9
  "default_presentation_sequence": 2,
11
10
  "activated_on": "2015-01-01"
12
11
  },{
13
- "predicate_name": "work_publication_strategy",
14
12
  "term_label": "already_published",
15
13
  "default_presentation_sequence": 3,
16
14
  "activated_on": "2015-01-01"
17
15
  },{
18
- "predicate_name": "work_publication_strategy",
19
16
  "term_label": "do_not_know",
20
17
  "default_presentation_sequence": 4,
21
18
  "activated_on": "2015-01-01"
@@ -3,13 +3,17 @@ require 'dry/validation/schema'
3
3
 
4
4
  module Locabulary
5
5
  class Schema < Dry::Validation::Schema
6
+ key(:predicate_name) { |predicate_name| predicate_name.format?(/\A[a-z_]+\Z/) & predicate_name.filled? }
6
7
  key(:values) do |values|
7
8
  values.array? do
8
9
  values.each do |value|
9
10
  value.hash? do
10
- value.key(:predicate_name) { |predicate_name| predicate_name.format?(/\A[a-z_]+\Z/) & predicate_name.filled? }
11
11
  value.key(:term_label) { |term_label| term_label.filled? }
12
12
  value.optional(:term_uri) { |term_label| term_label.none? | term_label.str? }
13
+ value.optional(:deposit_label) { |deposit_label| deposit_label.none? | deposit_label.str? }
14
+ value.optional(:description) { |description| description.none? | description.str? }
15
+ value.optional(:grouping) { |grouping| grouping.none? | grouping.str? }
16
+ value.optional(:affiliation) { |affiliation| affiliation.none? | affiliation.str? }
13
17
  value.optional(:default_presentation_sequence) do |default_presentation_sequence|
14
18
  default_presentation_sequence.none? | default_presentation_sequence.int?
15
19
  end
data/lib/locabulary.rb CHANGED
@@ -3,7 +3,7 @@ require 'json'
3
3
 
4
4
  # @since 0.1.0
5
5
  module Locabulary
6
- VERSION='0.1.8'.freeze
6
+ VERSION='0.2.0'.freeze
7
7
  DATA_DIRECTORY = File.expand_path("../../data/", __FILE__).freeze
8
8
 
9
9
  class RuntimeError < ::RuntimeError
@@ -11,11 +11,11 @@ module Locabulary
11
11
 
12
12
  class Item
13
13
  include Comparable
14
- ATTRIBUTE_NAMES = [:predicate_name, :term_label, :term_uri, :default_presentation_sequence, :activated_on, :deactivated_on].freeze
14
+ ATTRIBUTE_NAMES = [:predicate_name, :term_label, :term_uri, :deposit_label, :description, :grouping, :affiliation, :default_presentation_sequence, :activated_on, :deactivated_on].freeze
15
15
 
16
16
  attr_reader(*ATTRIBUTE_NAMES)
17
17
 
18
- def initialize(attributes = {})
18
+ def initialize(attributes={})
19
19
  ATTRIBUTE_NAMES.each do |key|
20
20
  value = attributes.fetch(key) { attributes.fetch(key.to_s, nil) }
21
21
  send("#{key}=", value)
@@ -53,16 +53,17 @@ module Locabulary
53
53
  active_cache[predicate_name] ||= begin
54
54
  filename = filename_for_predicate_name(predicate_name: predicate_name)
55
55
  json = JSON.parse(File.read(filename))
56
+ predicate_name = json.fetch('predicate_name')
56
57
  json.fetch('values').each_with_object([]) do |item_values, mem|
57
58
  activated_on = Date.parse(item_values.fetch('activated_on'))
58
59
  next unless activated_on < as_of
59
60
  deactivated_on_value = item_values.fetch('deactivated_on', nil)
60
61
  if deactivated_on_value.nil?
61
- mem << Item.new(item_values)
62
+ mem << Item.new(item_values.merge('predicate_name' => predicate_name))
62
63
  else
63
64
  deactivated_on = Date.parse(deactivated_on_value)
64
65
  next unless deactivated_on >= as_of
65
- mem << Item.new(item_values)
66
+ mem << Item.new(item_values.merge('predicate_name' => predicate_name))
66
67
  end
67
68
  mem
68
69
  end.sort
@@ -92,6 +93,15 @@ module Locabulary
92
93
  format_active_items_for(active_labels_for(options))
93
94
  end
94
95
 
96
+ # @api public
97
+ def properties_for_uri(options = {})
98
+ predicate_name = options.fetch(:predicate_name)
99
+ term_uri = options.fetch(:term_uri)
100
+ object = active_items_for(predicate_name: predicate_name).detect { |obj| obj.term_uri == term_uri }
101
+ return object. if object
102
+ term_uri
103
+ end
104
+
95
105
  # @api private
96
106
  def filename_for_predicate_name(options = {})
97
107
  predicate_name = options.fetch(:predicate_name)
@@ -5,6 +5,10 @@ require 'json'
5
5
 
6
6
  class JsonCreator
7
7
 
8
+ ATTRIBUTE_NAMES = [:term_label, :term_uri, :deposit_label, :description, :grouping, :affiliation, :presentation_sequence, :activated_on, :deactivated_on].freeze
9
+
10
+ attr_reader(*ATTRIBUTE_NAMES)
11
+
8
12
  def initialize(document_key, vocabulary, data_fetcher = default_data_fetcher)
9
13
  @document_key = document_key
10
14
  @vocabulary = vocabulary
@@ -22,6 +26,8 @@ class JsonCreator
22
26
  "Institute" => 400
23
27
  }
24
28
 
29
+
30
+
25
31
  def create_or_update
26
32
  @spreadsheet_data = data_fetcher.call(document_key)
27
33
  convert_to_json(get_required_data_from_spreadsheet)
@@ -35,6 +41,8 @@ class JsonCreator
35
41
 
36
42
  private
37
43
 
44
+ attr_writer(*ATTRIBUTE_NAMES)
45
+
38
46
  def default_data_fetcher
39
47
  ->(document_key) { GoogleSpreadsheet.new(document_key).read_spreadsheet }
40
48
  end
@@ -84,32 +92,38 @@ class JsonCreator
84
92
  end
85
93
 
86
94
  def get_required_data_from_spreadsheet
87
- final = {}
95
+ formatted_data =[]
88
96
  line = []
89
97
  spreadsheet_data.shift
90
98
  spreadsheet_data.each do |row|
99
+ final = {}
91
100
  line << row[0]
92
101
  line << row[1] if row[1] && !row[1].empty?
93
102
  line << row[2] if row[2] && !row[2].empty?
94
- final[ line.join('::') ] = row[3]
103
+ final[ "term_label" ] = line.join('::')
104
+ final[ "presentation_sequence" ] = ORDER[row[3]]
105
+ final[ "term_uri" ] = row[4]
106
+ final[ "deposit_label" ] = row[5]
107
+ final[ "description" ] = row[6]
108
+ final[ "grouping" ] = row[7]
109
+ final[ "affiliation" ] = row[8]
110
+ final[ "activated_on" ] = "2015-07-22"
111
+ final[ "deactivated_on" ] = nil
112
+ formatted_data << final
95
113
  line = []
96
114
  end
97
- final
115
+ formatted_data
98
116
  end
99
117
 
100
118
  def convert_to_json(data)
101
119
  json_array = []
102
- data.each do |key, value|
103
- data_map = {
104
- "predicate_name" => vocabulary,
105
- "term_label" => key,
106
- "term_uri" => nil,
107
- "default_presentation_sequence" => ORDER[value],
108
- "activated_on" => "2015-07-22",
109
- "deactivated_on" => nil
110
- }
120
+ data.each do |row|
121
+ data_map = {"predicate_name"=>vocabulary}
122
+ ATTRIBUTE_NAMES.each do |key|
123
+ data_map[ key ] = row.fetch(key) { row.fetch(key.to_s, nil) }
124
+ end
111
125
  json_array << data_map
112
126
  end
113
- @json_data = JSON.pretty_generate(json_array)
127
+ @json_data = JSON.pretty_generate({"predicate_name"=>vocabulary, "values"=> json_array})
114
128
  end
115
129
  end