chronicle-core 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rspec.yml +1 -1
  3. data/.gitignore +3 -1
  4. data/.rubocop-plugin.yml +4 -0
  5. data/.rubocop.yml +16 -2
  6. data/Gemfile +2 -2
  7. data/Guardfile +3 -3
  8. data/LICENSE.txt +1 -1
  9. data/README.md +87 -2
  10. data/Rakefile +63 -1
  11. data/bin/console +6 -6
  12. data/chronicle-core.gemspec +32 -26
  13. data/lib/chronicle/core/version.rb +1 -3
  14. data/lib/chronicle/core.rb +1 -3
  15. data/lib/chronicle/models/base.rb +96 -0
  16. data/lib/chronicle/models/builder.rb +35 -0
  17. data/lib/chronicle/models/generation.rb +89 -0
  18. data/lib/chronicle/models/model_factory.rb +63 -0
  19. data/lib/chronicle/models.rb +17 -0
  20. data/lib/chronicle/schema/rdf_parsing/graph_transformer.rb +122 -0
  21. data/lib/chronicle/schema/rdf_parsing/rdf_serializer.rb +138 -0
  22. data/lib/chronicle/schema/rdf_parsing/schemaorg.rb +50 -0
  23. data/lib/chronicle/schema/rdf_parsing/ttl_graph_builder.rb +142 -0
  24. data/lib/chronicle/schema/rdf_parsing.rb +11 -0
  25. data/lib/chronicle/schema/schema_graph.rb +145 -0
  26. data/lib/chronicle/schema/schema_property.rb +81 -0
  27. data/lib/chronicle/schema/schema_type.rb +110 -0
  28. data/lib/chronicle/schema/types.rb +9 -0
  29. data/lib/chronicle/schema/validation/base_contract.rb +22 -0
  30. data/lib/chronicle/schema/validation/contract_factory.rb +133 -0
  31. data/lib/chronicle/schema/validation/edge_validator.rb +53 -0
  32. data/lib/chronicle/schema/validation/generation.rb +29 -0
  33. data/lib/chronicle/schema/validation/validator.rb +23 -0
  34. data/lib/chronicle/schema/validation.rb +41 -0
  35. data/lib/chronicle/schema.rb +9 -2
  36. data/lib/chronicle/serialization/hash_serializer.rb +5 -11
  37. data/lib/chronicle/serialization/jsonapi_serializer.rb +41 -26
  38. data/lib/chronicle/serialization/jsonld_serializer.rb +38 -0
  39. data/lib/chronicle/serialization/record.rb +90 -0
  40. data/lib/chronicle/serialization/serializer.rb +31 -18
  41. data/lib/chronicle/serialization.rb +6 -4
  42. data/lib/chronicle/utils/hash_utils.rb +26 -0
  43. data/schema/chronicle_schema_v1.json +1008 -0
  44. data/schema/chronicle_schema_v1.rb +147 -0
  45. data/schema/chronicle_schema_v1.ttl +562 -0
  46. metadata +108 -16
  47. data/lib/chronicle/schema/activity.rb +0 -5
  48. data/lib/chronicle/schema/base.rb +0 -64
  49. data/lib/chronicle/schema/entity.rb +0 -5
  50. data/lib/chronicle/schema/raw.rb +0 -9
  51. data/lib/chronicle/schema/validator.rb +0 -55
  52. data/lib/chronicle/utils/hash.rb +0 -15
@@ -0,0 +1,147 @@
1
+ version 1
2
+ set_base_graph 'schema.org', '22.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
+ end
22
+
23
+ pick_type :InteractAction do
24
+ pick_type :CommunicateAction do
25
+ pick_type :CheckInAction
26
+ end
27
+ end
28
+
29
+ pick_type :UpdateAction do
30
+ pick_type :AddAction do
31
+ pick_type :InsertAction
32
+ end
33
+ end
34
+ end
35
+
36
+ pick_type :Event do
37
+ apply_property :location, many: true
38
+ apply_property :startDate
39
+ apply_property :endDate
40
+ end
41
+
42
+ pick_type :CreativeWork do
43
+ pick_type :Book do
44
+ apply_property :numberOfPages
45
+ end
46
+
47
+ pick_type :CreativeWorkSeries do
48
+ pick_type :PodcastSeries do
49
+ apply_property :webFeed
50
+ end
51
+ end
52
+
53
+ pick_type :Episode do
54
+ pick_type :PodcastEpisode
55
+
56
+ apply_property :partOfSeason
57
+ apply_property :partOfSeries
58
+ apply_property :duration
59
+ apply_property :episodeNumber
60
+ end
61
+
62
+ pick_type :MusicPlaylist do
63
+ pick_type :MusicAlbum do
64
+ apply_property :byArtist, many: true
65
+ end
66
+ end
67
+ pick_type :MusicRecording do
68
+ apply_property :inAlbum, many: true
69
+ apply_property :byArtist, many: true
70
+ apply_property :duration
71
+ end
72
+
73
+ pick_type :Message do
74
+ apply_property :recipient, many: true
75
+ apply_property :sender
76
+ end
77
+
78
+ apply_property :about, many: true
79
+ apply_property :aggregateRating
80
+ apply_property :author, many: true
81
+ apply_property :contributor, many: true
82
+ apply_property :contentLocation, many: true
83
+ apply_property :creator, many: true
84
+ apply_property :inLanguage, many: true
85
+ apply_property :isPartOf, many: true
86
+ apply_property :keywords, many: true
87
+ apply_property :mentions, many: true
88
+ apply_property :producer, many: true
89
+ apply_property :publisher, many: true
90
+ apply_property :text
91
+ end
92
+
93
+ pick_type :Intangible do
94
+ pick_type :Quantity do
95
+ pick_type :Duration
96
+ pick_type :Distance
97
+ pick_type :Energy
98
+ pick_type :Mass
99
+ end
100
+ end
101
+
102
+ pick_type :Organization
103
+
104
+ pick_type :Person do
105
+ apply_property :address
106
+ end
107
+ pick_type :Organization do
108
+ apply_property :location, many: true
109
+ pick_type :PerformingGroup do
110
+ pick_type :MusicGroup do
111
+ apply_property :album, many: true
112
+ end
113
+ end
114
+ end
115
+
116
+ pick_type :Place do
117
+ pick_type :AdministrativeArea do
118
+ pick_all_subtypes
119
+ end
120
+ end
121
+
122
+ apply_property :alternateName
123
+ apply_property :description
124
+ apply_property :identifier
125
+ apply_property :name
126
+ apply_property :subjectOf, many: true
127
+ apply_property :url
128
+
129
+ # TODO: Make these subproperties of identifier, alternateName
130
+ add_property :source
131
+ add_property :slug
132
+ add_property :sourceId
133
+ add_property :sourceNamespace
134
+ end
135
+
136
+ pick_type :DataType do
137
+ pick_type :Number do
138
+ pick_type :Integer
139
+ pick_type :Float
140
+ end
141
+ pick_type :Boolean
142
+ pick_type :Text do
143
+ pick_type :URL
144
+ end
145
+ pick_type :Date
146
+ pick_type :DateTime
147
+ end
@@ -0,0 +1,562 @@
1
+ # This file was generated from schema/chronicle_schema_v1.rb.
2
+ #
3
+ # Do not edit this file directly, as it will be overwritten.
4
+ #
5
+ # To generate a new version, run `rake generate`
6
+
7
+ @prefix : <https://schema.chronicle.app/> .
8
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
9
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
10
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
11
+ @prefix schemaorg: <https://schema.org/> .
12
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
13
+
14
+ :Action a rdfs:Class;
15
+ rdfs:comment "An action performed by a direct agent and indirect participants upon a direct object. Optionally happens at a location with the help of an inanimate instrument. The execution of the action may produce a result. Specific action sub-type documentation specifies the exact expectation of each argument/role.\\n\\nSee also [blog post](http://blog.schema.org/2014/04/announcing-schemaorg-actions.html) and [Actions overview document](https://schema.org/docs/actions.html).";
16
+ rdfs:seeAlso schemaorg:Action;
17
+ rdfs:subClassOf :Thing .
18
+
19
+ :AddAction a rdfs:Class;
20
+ rdfs:comment "The act of editing by adding an object to a collection.";
21
+ rdfs:seeAlso schemaorg:AddAction;
22
+ rdfs:subClassOf :UpdateAction .
23
+
24
+ :AdministrativeArea a rdfs:Class;
25
+ rdfs:comment "A geographical region, typically under the jurisdiction of a particular government.";
26
+ rdfs:seeAlso schemaorg:AdministrativeArea;
27
+ rdfs:subClassOf :Place .
28
+
29
+ :AssessAction a rdfs:Class;
30
+ rdfs:comment "The act of forming one's opinion, reaction or sentiment.";
31
+ rdfs:seeAlso schemaorg:AssessAction;
32
+ rdfs:subClassOf :Action .
33
+
34
+ :Book a rdfs:Class;
35
+ rdfs:comment "A book.";
36
+ rdfs:seeAlso schemaorg:Book;
37
+ rdfs:subClassOf :CreativeWork .
38
+
39
+ :Boolean a rdfs:Class;
40
+ rdfs:comment "Boolean: True or False.";
41
+ rdfs:seeAlso schemaorg:Boolean;
42
+ rdfs:subClassOf :DataType .
43
+
44
+ :CheckInAction a rdfs:Class;
45
+ rdfs:comment "The act of an agent communicating (service provider, social media, etc) their arrival by registering/confirming for a previously reserved service (e.g. flight check-in) or at a place (e.g. hotel), possibly resulting in a result (boarding pass, etc).\\n\\nRelated actions:\\n\\n* [[CheckOutAction]]: The antonym of CheckInAction.\\n* [[ArriveAction]]: Unlike ArriveAction, CheckInAction implies that the agent is informing/confirming the start of a previously reserved service.\\n* [[ConfirmAction]]: Unlike ConfirmAction, CheckInAction implies that the agent is informing/confirming the *start* of a previously reserved service rather than its validity/existence.";
46
+ rdfs:seeAlso schemaorg:CheckInAction;
47
+ rdfs:subClassOf :CommunicateAction .
48
+
49
+ :City a rdfs:Class;
50
+ rdfs:comment "A city or town.";
51
+ rdfs:seeAlso schemaorg:City;
52
+ rdfs:subClassOf :AdministrativeArea .
53
+
54
+ :CommunicateAction a rdfs:Class;
55
+ rdfs:comment "The act of conveying information to another person via a communication medium (instrument) such as speech, email, or telephone conversation.";
56
+ rdfs:seeAlso schemaorg:CommunicateAction;
57
+ rdfs:subClassOf :InteractAction .
58
+
59
+ :ConsumeAction a rdfs:Class;
60
+ rdfs:comment "The act of ingesting information/resources/food.";
61
+ rdfs:seeAlso schemaorg:ConsumeAction;
62
+ rdfs:subClassOf :Action .
63
+
64
+ :Country a rdfs:Class;
65
+ rdfs:comment "A country.";
66
+ rdfs:seeAlso schemaorg:Country;
67
+ rdfs:subClassOf :AdministrativeArea .
68
+
69
+ :CreativeWork a rdfs:Class;
70
+ rdfs:comment "The most generic kind of creative work, including books, movies, photographs, software programs, etc.";
71
+ rdfs:seeAlso schemaorg:CreativeWork;
72
+ rdfs:subClassOf :Thing .
73
+
74
+ :CreativeWorkSeries a rdfs:Class;
75
+ rdfs:comment """A CreativeWorkSeries in schema.org is a group of related items, typically but not necessarily of the same kind. CreativeWorkSeries are usually organized into some order, often chronological. Unlike [[ItemList]] which is a general purpose data structure for lists of things, the emphasis with CreativeWorkSeries is on published materials (written e.g. books and periodicals, or media such as TV, radio and games).\\n\\nSpecific subtypes are available for describing [[TVSeries]], [[RadioSeries]], [[MovieSeries]], [[BookSeries]], [[Periodical]] and [[VideoGameSeries]]. In each case, the [[hasPart]] / [[isPartOf]] properties can be used to relate the CreativeWorkSeries to its parts. The general CreativeWorkSeries type serves largely just to organize these more specific and practical subtypes.\\n\\nIt is common for properties applicable to an item from the series to be usefully applied to the containing group. Schema.org attempts to anticipate some of these cases, but publishers should be free to apply properties of the series parts to the series as a whole wherever they seem appropriate.
76
+ """;
77
+ rdfs:seeAlso schemaorg:CreativeWorkSeries;
78
+ rdfs:subClassOf :CreativeWork .
79
+
80
+ :DataType a rdfs:Class;
81
+ rdfs:comment "The basic data types such as Integers, Strings, etc.";
82
+ rdfs:seeAlso schemaorg:DataType .
83
+
84
+ :Date a rdfs:Class;
85
+ rdfs:comment "A date value in [ISO 8601 date format](http://en.wikipedia.org/wiki/ISO_8601).";
86
+ rdfs:seeAlso schemaorg:Date;
87
+ rdfs:subClassOf :DataType .
88
+
89
+ :DateTime a rdfs:Class;
90
+ rdfs:comment "A combination of date and time of day in the form [-]CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm] (see Chapter 5.4 of ISO 8601).";
91
+ rdfs:seeAlso schemaorg:DateTime;
92
+ rdfs:subClassOf :DataType .
93
+
94
+ :Distance a rdfs:Class;
95
+ rdfs:comment "Properties that take Distances as values are of the form '&lt;Number&gt; &lt;Length unit of measure&gt;'. E.g., '7 ft'.";
96
+ rdfs:seeAlso schemaorg:Distance;
97
+ rdfs:subClassOf :Quantity .
98
+
99
+ :Duration a rdfs:Class;
100
+ rdfs:comment "Quantity: Duration (use [ISO 8601 duration format](http://en.wikipedia.org/wiki/ISO_8601)).";
101
+ rdfs:seeAlso schemaorg:Duration;
102
+ rdfs:subClassOf :Quantity .
103
+
104
+ :Energy a rdfs:Class;
105
+ rdfs:comment "Properties that take Energy as values are of the form '&lt;Number&gt; &lt;Energy unit of measure&gt;'.";
106
+ rdfs:seeAlso schemaorg:Energy;
107
+ rdfs:subClassOf :Quantity .
108
+
109
+ :Episode a rdfs:Class;
110
+ rdfs:comment "A media episode (e.g. TV, radio, video game) which can be part of a series or season.";
111
+ rdfs:seeAlso schemaorg:Episode;
112
+ rdfs:subClassOf :CreativeWork .
113
+
114
+ :Event a rdfs:Class;
115
+ rdfs:comment "An event happening at a certain time and location, such as a concert, lecture, or festival. Ticketing information may be added via the [[offers]] property. Repeated events may be structured as separate Event objects.";
116
+ rdfs:seeAlso schemaorg:Event;
117
+ rdfs:subClassOf :Thing .
118
+
119
+ :Float a rdfs:Class;
120
+ rdfs:comment "Data type: Floating number.";
121
+ rdfs:seeAlso schemaorg:Float;
122
+ rdfs:subClassOf :Number .
123
+
124
+ :InsertAction a rdfs:Class;
125
+ rdfs:comment "The act of adding at a specific location in an ordered collection.";
126
+ rdfs:seeAlso schemaorg:InsertAction;
127
+ rdfs:subClassOf :AddAction .
128
+
129
+ :Intangible a rdfs:Class;
130
+ rdfs:comment "A utility class that serves as the umbrella for a number of 'intangible' things such as quantities, structured values, etc.";
131
+ rdfs:seeAlso schemaorg:Intangible;
132
+ rdfs:subClassOf :Thing .
133
+
134
+ :Integer a rdfs:Class;
135
+ rdfs:comment "Data type: Integer.";
136
+ rdfs:seeAlso schemaorg:Integer;
137
+ rdfs:subClassOf :Number .
138
+
139
+ :InteractAction a rdfs:Class;
140
+ rdfs:comment "The act of interacting with another person or organization.";
141
+ rdfs:seeAlso schemaorg:InteractAction;
142
+ rdfs:subClassOf :Action .
143
+
144
+ :LikeAction a rdfs:Class;
145
+ rdfs:comment "The act of expressing a positive sentiment about the object. An agent likes an object (a proposition, topic or theme) with participants.";
146
+ rdfs:seeAlso schemaorg:LikeAction;
147
+ rdfs:subClassOf :ReactAction .
148
+
149
+ :ListenAction a rdfs:Class;
150
+ rdfs:comment "The act of consuming audio content.";
151
+ rdfs:seeAlso schemaorg:ListenAction;
152
+ rdfs:subClassOf :ConsumeAction .
153
+
154
+ :Mass a rdfs:Class;
155
+ rdfs:comment "Properties that take Mass as values are of the form '&lt;Number&gt; &lt;Mass unit of measure&gt;'. E.g., '7 kg'.";
156
+ rdfs:seeAlso schemaorg:Mass;
157
+ rdfs:subClassOf :Quantity .
158
+
159
+ :Message a rdfs:Class;
160
+ rdfs:comment "A single message from a sender to one or more organizations or people.";
161
+ rdfs:seeAlso schemaorg:Message;
162
+ rdfs:subClassOf :CreativeWork .
163
+
164
+ :MusicAlbum a rdfs:Class;
165
+ rdfs:comment "A collection of music tracks.";
166
+ rdfs:seeAlso schemaorg:MusicAlbum;
167
+ rdfs:subClassOf :MusicPlaylist .
168
+
169
+ :MusicGroup a rdfs:Class;
170
+ rdfs:comment "A musical group, such as a band, an orchestra, or a choir. Can also be a solo musician.";
171
+ rdfs:seeAlso schemaorg:MusicGroup;
172
+ rdfs:subClassOf :PerformingGroup .
173
+
174
+ :MusicPlaylist a rdfs:Class;
175
+ rdfs:comment "A collection of music tracks in playlist form.";
176
+ rdfs:seeAlso schemaorg:MusicPlaylist;
177
+ rdfs:subClassOf :CreativeWork .
178
+
179
+ :MusicRecording a rdfs:Class;
180
+ rdfs:comment "A music recording (track), usually a single song.";
181
+ rdfs:seeAlso schemaorg:MusicRecording;
182
+ rdfs:subClassOf :CreativeWork .
183
+
184
+ :Number a rdfs:Class;
185
+ rdfs:comment "Data type: Number.\\n\\nUsage guidelines:\\n\\n* Use values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similar Unicode symbols.\\n* Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.";
186
+ rdfs:seeAlso schemaorg:Number;
187
+ rdfs:subClassOf :DataType .
188
+
189
+ :Organization a rdfs:Class;
190
+ rdfs:comment "An organization such as a school, NGO, corporation, club, etc.";
191
+ rdfs:seeAlso schemaorg:Organization;
192
+ rdfs:subClassOf :Thing .
193
+
194
+ :PerformingGroup a rdfs:Class;
195
+ rdfs:comment "A performance group, such as a band, an orchestra, or a circus.";
196
+ rdfs:seeAlso schemaorg:PerformingGroup;
197
+ rdfs:subClassOf :Organization .
198
+
199
+ :Person a rdfs:Class;
200
+ rdfs:comment "A person (alive, dead, undead, or fictional).";
201
+ rdfs:seeAlso schemaorg:Person;
202
+ rdfs:subClassOf :Thing .
203
+
204
+ :Place a rdfs:Class;
205
+ rdfs:comment "Entities that have a somewhat fixed, physical extension.";
206
+ rdfs:seeAlso schemaorg:Place;
207
+ rdfs:subClassOf :Thing .
208
+
209
+ :PodcastEpisode a rdfs:Class;
210
+ rdfs:comment "A single episode of a podcast series.";
211
+ rdfs:seeAlso schemaorg:PodcastEpisode;
212
+ rdfs:subClassOf :Episode .
213
+
214
+ :PodcastSeries a rdfs:Class;
215
+ rdfs:comment "A podcast is an episodic series of digital audio or video files which a user can download and listen to.";
216
+ rdfs:seeAlso schemaorg:PodcastSeries;
217
+ rdfs:subClassOf :CreativeWorkSeries .
218
+
219
+ :Quantity a rdfs:Class;
220
+ rdfs:comment "Quantities such as distance, time, mass, weight, etc. Particular instances of say Mass are entities like '3 kg' or '4 milligrams'.";
221
+ rdfs:seeAlso schemaorg:Quantity;
222
+ rdfs:subClassOf :Intangible .
223
+
224
+ :ReactAction a rdfs:Class;
225
+ rdfs:comment "The act of responding instinctively and emotionally to an object, expressing a sentiment.";
226
+ rdfs:seeAlso schemaorg:ReactAction;
227
+ rdfs:subClassOf :AssessAction .
228
+
229
+ :SchoolDistrict a rdfs:Class;
230
+ rdfs:comment "A School District is an administrative area for the administration of schools.";
231
+ rdfs:seeAlso schemaorg:SchoolDistrict;
232
+ rdfs:subClassOf :AdministrativeArea .
233
+
234
+ :State a rdfs:Class;
235
+ rdfs:comment "A state or province of a country.";
236
+ rdfs:seeAlso schemaorg:State;
237
+ rdfs:subClassOf :AdministrativeArea .
238
+
239
+ :Text a rdfs:Class;
240
+ rdfs:comment "Data type: Text.";
241
+ rdfs:seeAlso schemaorg:Text;
242
+ rdfs:subClassOf :DataType .
243
+
244
+ :Thing a rdfs:Class;
245
+ rdfs:comment "The most generic type of item.";
246
+ rdfs:seeAlso schemaorg:Thing .
247
+
248
+ :URL a rdfs:Class;
249
+ rdfs:comment "Data type: URL.";
250
+ rdfs:seeAlso schemaorg:URL;
251
+ rdfs:subClassOf :Text .
252
+
253
+ :UpdateAction a rdfs:Class;
254
+ rdfs:comment "The act of managing by changing/editing the state of the object.";
255
+ rdfs:seeAlso schemaorg:UpdateAction;
256
+ rdfs:subClassOf :Action .
257
+
258
+ <https://schema.chronicle.app> a owl:Ontology;
259
+ owl:versionInfo "1" .
260
+
261
+ :about a rdf:Property;
262
+ rdfs:comment "The subject matter of the content.";
263
+ rdfs:seeAlso schemaorg:about;
264
+ :domainIncludes :CreativeWork;
265
+ :rangeIncludes :Thing .
266
+
267
+ :address a rdf:Property;
268
+ rdfs:comment "Physical address of the item.";
269
+ rdfs:seeAlso schemaorg:address;
270
+ owl:maxCardinality 1;
271
+ :domainIncludes :Person;
272
+ :rangeIncludes :Text .
273
+
274
+ :agent a rdf:Property;
275
+ rdfs:comment "The direct performer or driver of the action (animate or inanimate). E.g. *John* wrote a book.";
276
+ rdfs:seeAlso schemaorg:agent;
277
+ owl:maxCardinality 1;
278
+ owl:minCardinality 1;
279
+ :domainIncludes :Action;
280
+ :rangeIncludes :Organization,
281
+ :Person .
282
+
283
+ :aggregateRating a rdf:Property;
284
+ rdfs:comment "The overall rating, based on a collection of reviews or ratings, of the item.";
285
+ rdfs:seeAlso schemaorg:aggregateRating;
286
+ owl:maxCardinality 1;
287
+ :domainIncludes :CreativeWork .
288
+
289
+ :album a rdf:Property;
290
+ rdfs:comment "A music album.";
291
+ rdfs:seeAlso schemaorg:album;
292
+ :domainIncludes :MusicGroup;
293
+ :rangeIncludes :MusicAlbum .
294
+
295
+ :alternateName a rdf:Property;
296
+ rdfs:comment "An alias for the item.";
297
+ rdfs:seeAlso schemaorg:alternateName;
298
+ owl:maxCardinality 1;
299
+ :domainIncludes :Thing;
300
+ :rangeIncludes :Text .
301
+
302
+ :author a rdf:Property;
303
+ rdfs:comment "The author of this content or rating. Please note that author is special in that HTML 5 provides a special mechanism for indicating authorship via the rel tag. That is equivalent to this and may be used interchangeably.";
304
+ rdfs:seeAlso schemaorg:author;
305
+ :domainIncludes :CreativeWork;
306
+ :rangeIncludes :Organization,
307
+ :Person .
308
+
309
+ :byArtist a rdf:Property;
310
+ rdfs:comment "The artist that performed this album or recording.";
311
+ rdfs:seeAlso schemaorg:byArtist;
312
+ :domainIncludes :MusicAlbum,
313
+ :MusicRecording;
314
+ :rangeIncludes :MusicGroup,
315
+ :Person .
316
+
317
+ :contentLocation a rdf:Property;
318
+ rdfs:comment "The location depicted or described in the content. For example, the location in a photograph or painting.";
319
+ rdfs:seeAlso schemaorg:contentLocation;
320
+ :domainIncludes :CreativeWork;
321
+ :rangeIncludes :Place .
322
+
323
+ :contributor a rdf:Property;
324
+ rdfs:comment "A secondary contributor to the CreativeWork or Event.";
325
+ rdfs:seeAlso schemaorg:contributor;
326
+ :domainIncludes :CreativeWork;
327
+ :rangeIncludes :Organization,
328
+ :Person .
329
+
330
+ :creator a rdf:Property;
331
+ rdfs:comment "The creator/author of this CreativeWork. This is the same as the Author property for CreativeWork.";
332
+ rdfs:seeAlso schemaorg:creator;
333
+ :domainIncludes :CreativeWork;
334
+ :rangeIncludes :Organization,
335
+ :Person .
336
+
337
+ :description a rdf:Property;
338
+ rdfs:comment "A description of the item.";
339
+ rdfs:seeAlso schemaorg:description;
340
+ owl:maxCardinality 1;
341
+ :domainIncludes :Thing;
342
+ :rangeIncludes :Text .
343
+
344
+ :duration a rdf:Property;
345
+ rdfs:comment "The duration of the item (movie, audio recording, event, etc.) in [ISO 8601 date format](http://en.wikipedia.org/wiki/ISO_8601).";
346
+ rdfs:seeAlso schemaorg:duration;
347
+ owl:maxCardinality 1;
348
+ :domainIncludes :Episode,
349
+ :MusicRecording;
350
+ :rangeIncludes :Duration .
351
+
352
+ :endDate a rdf:Property;
353
+ rdfs:comment "The end date and time of the item (in [ISO 8601 date format](http://en.wikipedia.org/wiki/ISO_8601)).";
354
+ rdfs:seeAlso schemaorg:endDate;
355
+ owl:maxCardinality 1;
356
+ :domainIncludes :Event;
357
+ :rangeIncludes :Date,
358
+ :DateTime .
359
+
360
+ :endTime a rdf:Property;
361
+ rdfs:comment "The endTime of something. For a reserved event or service (e.g. FoodEstablishmentReservation), the time that it is expected to end. For actions that span a period of time, when the action was performed. E.g. John wrote a book from January to *December*. For media, including audio and video, it's the time offset of the end of a clip within a larger file.\\n\\nNote that Event uses startDate/endDate instead of startTime/endTime, even when describing dates with times. This situation may be clarified in future revisions.";
362
+ rdfs:seeAlso schemaorg:endTime;
363
+ owl:maxCardinality 1;
364
+ :domainIncludes :Action;
365
+ :rangeIncludes :DateTime .
366
+
367
+ :episodeNumber a rdf:Property;
368
+ rdfs:comment "Position of the episode within an ordered group of episodes.";
369
+ rdfs:seeAlso schemaorg:episodeNumber;
370
+ owl:maxCardinality 1;
371
+ :domainIncludes :Episode;
372
+ :rangeIncludes :Integer,
373
+ :Text .
374
+
375
+ :identifier a rdf:Property;
376
+ rdfs:comment """The identifier property represents any kind of identifier for any kind of [[Thing]], such as ISBNs, GTIN codes, UUIDs etc. Schema.org provides dedicated properties for representing many of these, either as textual strings or as URL (URI) links. See [background notes](/docs/datamodel.html#identifierBg) for more details.
377
+ """;
378
+ rdfs:seeAlso schemaorg:identifier;
379
+ owl:maxCardinality 1;
380
+ :domainIncludes :Thing;
381
+ :rangeIncludes :Text,
382
+ :URL .
383
+
384
+ :inAlbum a rdf:Property;
385
+ rdfs:comment "The album to which this recording belongs.";
386
+ rdfs:seeAlso schemaorg:inAlbum;
387
+ :domainIncludes :MusicRecording;
388
+ :rangeIncludes :MusicAlbum .
389
+
390
+ :inLanguage a rdf:Property;
391
+ rdfs:comment "The language of the content or performance or used in an action. Please use one of the language codes from the [IETF BCP 47 standard](http://tools.ietf.org/html/bcp47). See also [[availableLanguage]].";
392
+ rdfs:seeAlso schemaorg:inLanguage;
393
+ :domainIncludes :CreativeWork;
394
+ :rangeIncludes :Text .
395
+
396
+ :instrument a rdf:Property;
397
+ rdfs:comment "The object that helped the agent perform the action. E.g. John wrote a book with *a pen*.";
398
+ rdfs:seeAlso schemaorg:instrument;
399
+ owl:maxCardinality 1;
400
+ :domainIncludes :Action;
401
+ :rangeIncludes :Thing .
402
+
403
+ :isPartOf a rdf:Property;
404
+ rdfs:comment "Indicates an item or CreativeWork that this item, or CreativeWork (in some sense), is part of.";
405
+ rdfs:seeAlso schemaorg:isPartOf;
406
+ :domainIncludes :CreativeWork;
407
+ :rangeIncludes :CreativeWork,
408
+ :URL .
409
+
410
+ :keywords a rdf:Property;
411
+ rdfs:comment "Keywords or tags used to describe some item. Multiple textual entries in a keywords list are typically delimited by commas, or by repeating the property.";
412
+ rdfs:seeAlso schemaorg:keywords;
413
+ :domainIncludes :CreativeWork;
414
+ :rangeIncludes :Text,
415
+ :URL .
416
+
417
+ :location a rdf:Property;
418
+ rdfs:comment "The location of, for example, where an event is happening, where an organization is located, or where an action takes place.";
419
+ rdfs:seeAlso schemaorg:location;
420
+ :domainIncludes :Event,
421
+ :Organization;
422
+ :rangeIncludes :Place,
423
+ :Text .
424
+
425
+ :mentions a rdf:Property;
426
+ rdfs:comment "Indicates that the CreativeWork contains a reference to, but is not necessarily about a concept.";
427
+ rdfs:seeAlso schemaorg:mentions;
428
+ :domainIncludes :CreativeWork;
429
+ :rangeIncludes :Thing .
430
+
431
+ :name a rdf:Property;
432
+ rdfs:comment "The name of the item.";
433
+ rdfs:seeAlso schemaorg:name;
434
+ owl:maxCardinality 1;
435
+ :domainIncludes :Thing;
436
+ :rangeIncludes :Text .
437
+
438
+ :numberOfPages a rdf:Property;
439
+ rdfs:comment "The number of pages in the book.";
440
+ rdfs:seeAlso schemaorg:numberOfPages;
441
+ owl:maxCardinality 1;
442
+ :domainIncludes :Book;
443
+ :rangeIncludes :Integer .
444
+
445
+ :object a rdf:Property;
446
+ rdfs:comment "The object upon which the action is carried out, whose state is kept intact or changed. Also known as the semantic roles patient, affected or undergoer (which change their state) or theme (which doesn't). E.g. John read *a book*.";
447
+ rdfs:seeAlso schemaorg:object;
448
+ owl:maxCardinality 1;
449
+ :domainIncludes :Action;
450
+ :rangeIncludes :Thing .
451
+
452
+ :partOfSeason a rdf:Property;
453
+ rdfs:comment "The season to which this episode belongs.";
454
+ rdfs:seeAlso schemaorg:partOfSeason;
455
+ owl:maxCardinality 1;
456
+ :domainIncludes :Episode .
457
+
458
+ :partOfSeries a rdf:Property;
459
+ rdfs:comment "The series to which this episode or season belongs.";
460
+ rdfs:seeAlso schemaorg:partOfSeries;
461
+ owl:maxCardinality 1;
462
+ :domainIncludes :Episode;
463
+ :rangeIncludes :CreativeWorkSeries .
464
+
465
+ :producer a rdf:Property;
466
+ rdfs:comment "The person or organization who produced the work (e.g. music album, movie, TV/radio series etc.).";
467
+ rdfs:seeAlso schemaorg:producer;
468
+ :domainIncludes :CreativeWork;
469
+ :rangeIncludes :Organization,
470
+ :Person .
471
+
472
+ :publisher a rdf:Property;
473
+ rdfs:comment "The publisher of the creative work.";
474
+ rdfs:seeAlso schemaorg:publisher;
475
+ :domainIncludes :CreativeWork;
476
+ :rangeIncludes :Organization,
477
+ :Person .
478
+
479
+ :recipient a rdf:Property;
480
+ rdfs:comment "A sub property of participant. The participant who is at the receiving end of the action.";
481
+ rdfs:seeAlso schemaorg:recipient;
482
+ :domainIncludes :Message;
483
+ :rangeIncludes :Organization,
484
+ :Person .
485
+
486
+ :result a rdf:Property;
487
+ rdfs:comment "The result produced in the action. E.g. John wrote *a book*.";
488
+ rdfs:seeAlso schemaorg:result;
489
+ owl:maxCardinality 1;
490
+ :domainIncludes :Action;
491
+ :rangeIncludes :Thing .
492
+
493
+ :sender a rdf:Property;
494
+ rdfs:comment "A sub property of participant. The participant who is at the sending end of the action.";
495
+ rdfs:seeAlso schemaorg:sender;
496
+ owl:maxCardinality 1;
497
+ :domainIncludes :Message;
498
+ :rangeIncludes :Organization,
499
+ :Person .
500
+
501
+ :slug a rdf:Property;
502
+ owl:maxCardinality 1;
503
+ :domainIncludes :Thing;
504
+ :rangeIncludes :Text .
505
+
506
+ :source a rdf:Property;
507
+ owl:maxCardinality 1;
508
+ :domainIncludes :Thing;
509
+ :rangeIncludes :Text .
510
+
511
+ :sourceId a rdf:Property;
512
+ owl:maxCardinality 1;
513
+ :domainIncludes :Thing;
514
+ :rangeIncludes :Text .
515
+
516
+ :sourceNamespace a rdf:Property;
517
+ owl:maxCardinality 1;
518
+ :domainIncludes :Thing;
519
+ :rangeIncludes :Text .
520
+
521
+ :startDate a rdf:Property;
522
+ rdfs:comment "The start date and time of the item (in [ISO 8601 date format](http://en.wikipedia.org/wiki/ISO_8601)).";
523
+ rdfs:seeAlso schemaorg:startDate;
524
+ owl:maxCardinality 1;
525
+ :domainIncludes :Event;
526
+ :rangeIncludes :Date,
527
+ :DateTime .
528
+
529
+ :startTime a rdf:Property;
530
+ rdfs:comment "The startTime of something. For a reserved event or service (e.g. FoodEstablishmentReservation), the time that it is expected to start. For actions that span a period of time, when the action was performed. E.g. John wrote a book from *January* to December. For media, including audio and video, it's the time offset of the start of a clip within a larger file.\\n\\nNote that Event uses startDate/endDate instead of startTime/endTime, even when describing dates with times. This situation may be clarified in future revisions.";
531
+ rdfs:seeAlso schemaorg:startTime;
532
+ owl:maxCardinality 1;
533
+ :domainIncludes :Action;
534
+ :rangeIncludes :DateTime .
535
+
536
+ :subjectOf a rdf:Property;
537
+ rdfs:comment "A CreativeWork or Event about this Thing.";
538
+ rdfs:seeAlso schemaorg:subjectOf;
539
+ :domainIncludes :Thing;
540
+ :rangeIncludes :CreativeWork,
541
+ :Event .
542
+
543
+ :text a rdf:Property;
544
+ rdfs:comment "The textual content of this CreativeWork.";
545
+ rdfs:seeAlso schemaorg:text;
546
+ owl:maxCardinality 1;
547
+ :domainIncludes :CreativeWork;
548
+ :rangeIncludes :Text .
549
+
550
+ :url a rdf:Property;
551
+ rdfs:comment "URL of the item.";
552
+ rdfs:seeAlso schemaorg:url;
553
+ owl:maxCardinality 1;
554
+ :domainIncludes :Thing;
555
+ :rangeIncludes :URL .
556
+
557
+ :webFeed a rdf:Property;
558
+ rdfs:comment "The URL for a feed, e.g. associated with a podcast series, blog, or series of date-stamped updates. This is usually RSS or Atom.";
559
+ rdfs:seeAlso schemaorg:webFeed;
560
+ owl:maxCardinality 1;
561
+ :domainIncludes :PodcastSeries;
562
+ :rangeIncludes :URL .