chronicle-core 0.2.2 → 0.3.1
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/.github/workflows/rspec.yml +1 -1
- data/.gitignore +3 -1
- data/.rubocop-plugin.yml +4 -0
- data/.rubocop.yml +16 -2
- data/Gemfile +2 -2
- data/Guardfile +3 -3
- data/LICENSE.txt +1 -1
- data/README.md +87 -2
- data/Rakefile +63 -1
- data/bin/console +6 -6
- data/chronicle-core.gemspec +32 -26
- data/lib/chronicle/core/version.rb +1 -3
- data/lib/chronicle/core.rb +1 -3
- data/lib/chronicle/models/base.rb +96 -0
- data/lib/chronicle/models/builder.rb +35 -0
- data/lib/chronicle/models/generation.rb +89 -0
- data/lib/chronicle/models/model_factory.rb +65 -0
- data/lib/chronicle/models.rb +17 -0
- data/lib/chronicle/schema/rdf_parsing/graph_transformer.rb +122 -0
- data/lib/chronicle/schema/rdf_parsing/rdf_serializer.rb +138 -0
- data/lib/chronicle/schema/rdf_parsing/schemaorg.rb +47 -0
- data/lib/chronicle/schema/rdf_parsing/ttl_graph_builder.rb +142 -0
- data/lib/chronicle/schema/rdf_parsing.rb +11 -0
- data/lib/chronicle/schema/schema_graph.rb +145 -0
- data/lib/chronicle/schema/schema_property.rb +81 -0
- data/lib/chronicle/schema/schema_type.rb +110 -0
- data/lib/chronicle/schema/types.rb +9 -0
- data/lib/chronicle/schema/validation/base_contract.rb +22 -0
- data/lib/chronicle/schema/validation/contract_factory.rb +133 -0
- data/lib/chronicle/schema/validation/edge_validator.rb +53 -0
- data/lib/chronicle/schema/validation/generation.rb +29 -0
- data/lib/chronicle/schema/validation/validator.rb +23 -0
- data/lib/chronicle/schema/validation.rb +41 -0
- data/lib/chronicle/schema.rb +9 -2
- data/lib/chronicle/serialization/hash_serializer.rb +5 -11
- data/lib/chronicle/serialization/jsonapi_serializer.rb +41 -26
- data/lib/chronicle/serialization/jsonld_serializer.rb +38 -0
- data/lib/chronicle/serialization/record.rb +90 -0
- data/lib/chronicle/serialization/serializer.rb +31 -18
- data/lib/chronicle/serialization.rb +6 -4
- data/lib/chronicle/utils/hash_utils.rb +19 -16
- data/schema/chronicle_schema_v1.json +1283 -0
- data/schema/chronicle_schema_v1.rb +183 -0
- data/schema/chronicle_schema_v1.ttl +720 -0
- metadata +107 -15
- data/lib/chronicle/schema/activity.rb +0 -5
- data/lib/chronicle/schema/base.rb +0 -79
- data/lib/chronicle/schema/entity.rb +0 -5
- data/lib/chronicle/schema/raw.rb +0 -9
- data/lib/chronicle/schema/validator.rb +0 -55
@@ -0,0 +1,183 @@
|
|
1
|
+
version 1
|
2
|
+
set_base_graph 'schema.org', '26.0'
|
3
|
+
|
4
|
+
pick_type :Thing do
|
5
|
+
pick_type :Action do
|
6
|
+
apply_property :endTime
|
7
|
+
apply_property :startTime
|
8
|
+
apply_property :agent, required: true
|
9
|
+
apply_property :instrument
|
10
|
+
apply_property :object
|
11
|
+
apply_property :result
|
12
|
+
|
13
|
+
pick_type :AssessAction do
|
14
|
+
pick_type :ReactAction do
|
15
|
+
pick_type :LikeAction
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
pick_type :ConsumeAction do
|
20
|
+
pick_type :ListenAction
|
21
|
+
pick_type :ReadAction
|
22
|
+
pick_type :UseAction
|
23
|
+
pick_type :ViewAction
|
24
|
+
pick_type :WatchAction
|
25
|
+
end
|
26
|
+
|
27
|
+
pick_type :InteractAction do
|
28
|
+
pick_type :CommunicateAction do
|
29
|
+
pick_type :CheckInAction
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
pick_type :UpdateAction do
|
34
|
+
pick_type :AddAction do
|
35
|
+
pick_type :InsertAction
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
pick_type :Event do
|
41
|
+
apply_property :location, many: true
|
42
|
+
apply_property :startDate
|
43
|
+
apply_property :endDate
|
44
|
+
end
|
45
|
+
|
46
|
+
pick_type :CreativeWork do
|
47
|
+
pick_type :Book do
|
48
|
+
apply_property :numberOfPages
|
49
|
+
end
|
50
|
+
|
51
|
+
pick_type :CreativeWorkSeries do
|
52
|
+
pick_type :PodcastSeries do
|
53
|
+
apply_property :webFeed
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
pick_type :Episode do
|
58
|
+
pick_type :PodcastEpisode
|
59
|
+
|
60
|
+
apply_property :partOfSeason
|
61
|
+
apply_property :partOfSeries
|
62
|
+
apply_property :duration
|
63
|
+
apply_property :episodeNumber
|
64
|
+
end
|
65
|
+
|
66
|
+
pick_type :MediaObject do
|
67
|
+
pick_type :AudioObject
|
68
|
+
pick_type :ImageObject
|
69
|
+
pick_type :VideoObject
|
70
|
+
|
71
|
+
apply_property :duration
|
72
|
+
apply_property :width
|
73
|
+
apply_property :height
|
74
|
+
end
|
75
|
+
|
76
|
+
pick_type :MusicPlaylist do
|
77
|
+
pick_type :MusicAlbum do
|
78
|
+
apply_property :byArtist, many: true
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
pick_type :MusicRecording do
|
83
|
+
apply_property :inAlbum, many: true
|
84
|
+
apply_property :byArtist, many: true
|
85
|
+
apply_property :duration
|
86
|
+
end
|
87
|
+
|
88
|
+
pick_type :Message do
|
89
|
+
apply_property :recipient, many: true
|
90
|
+
apply_property :sender
|
91
|
+
end
|
92
|
+
|
93
|
+
apply_property :about, many: true
|
94
|
+
apply_property :aggregateRating
|
95
|
+
apply_property :author, many: true
|
96
|
+
apply_property :contributor, many: true
|
97
|
+
apply_property :contentLocation, many: true
|
98
|
+
apply_property :creator, many: true
|
99
|
+
apply_property :inLanguage, many: true
|
100
|
+
apply_property :isPartOf, many: true
|
101
|
+
apply_property :keywords, many: true
|
102
|
+
apply_property :mentions, many: true
|
103
|
+
apply_property :producer, many: true
|
104
|
+
apply_property :publisher, many: true
|
105
|
+
apply_property :text
|
106
|
+
end
|
107
|
+
|
108
|
+
pick_type :Intangible do
|
109
|
+
pick_type :Quantity do
|
110
|
+
pick_type :Duration
|
111
|
+
pick_type :Distance
|
112
|
+
pick_type :Energy
|
113
|
+
pick_type :Mass
|
114
|
+
end
|
115
|
+
|
116
|
+
pick_type :StructuredValue do
|
117
|
+
pick_type :ContactPoint do
|
118
|
+
pick_type :PostalAddress do
|
119
|
+
apply_property :addressCountry
|
120
|
+
apply_property :addressLocality
|
121
|
+
apply_property :addressRegion
|
122
|
+
apply_property :postOfficeBoxNumber
|
123
|
+
apply_property :postalCode
|
124
|
+
apply_property :streetAddress
|
125
|
+
end
|
126
|
+
end
|
127
|
+
pick_type :QuantitativeValue do
|
128
|
+
apply_property :value
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
pick_type :Organization
|
134
|
+
|
135
|
+
pick_type :Person do
|
136
|
+
apply_property :address
|
137
|
+
end
|
138
|
+
pick_type :Organization do
|
139
|
+
apply_property :location, many: true
|
140
|
+
pick_type :PerformingGroup do
|
141
|
+
pick_type :MusicGroup do
|
142
|
+
apply_property :album, many: true
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
pick_type :Place do
|
148
|
+
pick_type :AdministrativeArea do
|
149
|
+
pick_all_subtypes
|
150
|
+
end
|
151
|
+
|
152
|
+
apply_property :address
|
153
|
+
apply_property :latitude
|
154
|
+
apply_property :longitude
|
155
|
+
end
|
156
|
+
|
157
|
+
apply_property :alternateName
|
158
|
+
apply_property :description
|
159
|
+
apply_property :identifier
|
160
|
+
apply_property :image
|
161
|
+
apply_property :name
|
162
|
+
apply_property :subjectOf, many: true
|
163
|
+
apply_property :url
|
164
|
+
|
165
|
+
# TODO: Make these subproperties of identifier, alternateName
|
166
|
+
add_property :source
|
167
|
+
add_property :slug
|
168
|
+
add_property :sourceId
|
169
|
+
add_property :sourceNamespace
|
170
|
+
end
|
171
|
+
|
172
|
+
pick_type :DataType do
|
173
|
+
pick_type :Number do
|
174
|
+
pick_type :Integer
|
175
|
+
pick_type :Float
|
176
|
+
end
|
177
|
+
pick_type :Boolean
|
178
|
+
pick_type :Text do
|
179
|
+
pick_type :URL
|
180
|
+
end
|
181
|
+
pick_type :Date
|
182
|
+
pick_type :DateTime
|
183
|
+
end
|