CreativeWorkSeries   F
last analyzed

Complexity

Total Complexity 101

Size/Duplication

Total Lines 1575
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 101
lcom 1
cbo 1
dl 0
loc 1575
rs 0.8
c 0
b 0
f 0

101 Methods

Rating   Name   Duplication   Size   Complexity  
A about() 0 4 1
A accessMode() 0 4 1
A accessModeSufficient() 0 4 1
A accessibilityAPI() 0 4 1
A accessibilityControl() 0 4 1
A accessibilityFeature() 0 4 1
A accessibilityHazard() 0 4 1
A accessibilitySummary() 0 4 1
A accountablePerson() 0 4 1
A additionalType() 0 4 1
A aggregateRating() 0 4 1
A alternateName() 0 4 1
A alternativeHeadline() 0 4 1
A associatedMedia() 0 4 1
A audience() 0 4 1
A audio() 0 4 1
A author() 0 4 1
A award() 0 4 1
A awards() 0 4 1
A character() 0 4 1
A citation() 0 4 1
A comment() 0 4 1
A commentCount() 0 4 1
A contentLocation() 0 4 1
A contentRating() 0 4 1
A contributor() 0 4 1
A copyrightHolder() 0 4 1
A copyrightYear() 0 4 1
A creator() 0 4 1
A dateCreated() 0 4 1
A dateModified() 0 4 1
A datePublished() 0 4 1
A description() 0 4 1
A director() 0 4 1
A disambiguatingDescription() 0 4 1
A discussionUrl() 0 4 1
A editor() 0 4 1
A educationalAlignment() 0 4 1
A educationalUse() 0 4 1
A encoding() 0 4 1
A encodingFormat() 0 4 1
A encodings() 0 4 1
A endDate() 0 4 1
A exampleOfWork() 0 4 1
A expires() 0 4 1
A fileFormat() 0 4 1
A funder() 0 4 1
A genre() 0 4 1
A hasPart() 0 4 1
A headline() 0 4 1
A identifier() 0 4 1
A image() 0 4 1
A inLanguage() 0 4 1
A interactionStatistic() 0 4 1
A interactivityType() 0 4 1
A isAccessibleForFree() 0 4 1
A isBasedOn() 0 4 1
A isBasedOnUrl() 0 4 1
A isFamilyFriendly() 0 4 1
A isPartOf() 0 4 1
A issn() 0 4 1
A keywords() 0 4 1
A learningResourceType() 0 4 1
A license() 0 4 1
A locationCreated() 0 4 1
A mainEntity() 0 4 1
A mainEntityOfPage() 0 4 1
A material() 0 4 1
A mentions() 0 4 1
A name() 0 4 1
A offers() 0 4 1
A position() 0 4 1
A potentialAction() 0 4 1
A producer() 0 4 1
A provider() 0 4 1
A publication() 0 4 1
A publisher() 0 4 1
A publishingPrinciples() 0 4 1
A recordedAt() 0 4 1
A releasedEvent() 0 4 1
A review() 0 4 1
A reviews() 0 4 1
A sameAs() 0 4 1
A schemaVersion() 0 4 1
A sourceOrganization() 0 4 1
A spatial() 0 4 1
A spatialCoverage() 0 4 1
A sponsor() 0 4 1
A startDate() 0 4 1
A subjectOf() 0 4 1
A temporal() 0 4 1
A temporalCoverage() 0 4 1
A text() 0 4 1
A thumbnailUrl() 0 4 1
A timeRequired() 0 4 1
A translator() 0 4 1
A typicalAgeRange() 0 4 1
A url() 0 4 1
A version() 0 4 1
A video() 0 4 1
A workExample() 0 4 1

How to fix   Complexity   

Complex Class

Complex classes like CreativeWorkSeries often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

While breaking up the class, it is a good idea to analyze how other classes use CreativeWorkSeries, and based on these observations, apply Extract Interface, too.

1
<?php
2
3
namespace Spatie\SchemaOrg;
4
5
use \Spatie\SchemaOrg\Contracts\CreativeWorkSeriesContract;
6
use \Spatie\SchemaOrg\Contracts\CreativeWorkContract;
7
use \Spatie\SchemaOrg\Contracts\IntangibleContract;
8
use \Spatie\SchemaOrg\Contracts\SeriesContract;
9
use \Spatie\SchemaOrg\Contracts\ThingContract;
10
11
/**
12
 * A CreativeWorkSeries in schema.org is a group of related items, typically but
13
 * not necessarily of the same kind. CreativeWorkSeries are usually organized
14
 * into some order, often chronological. Unlike [[ItemList]] which is a general
15
 * purpose data structure for lists of things, the emphasis with
16
 * CreativeWorkSeries is on published materials (written e.g. books and
17
 * periodicals, or media such as tv, radio and games).
18
 * 
19
 * Specific subtypes are available for describing [[TVSeries]], [[RadioSeries]],
20
 * [[MovieSeries]], [[BookSeries]], [[Periodical]] and [[VideoGameSeries]]. In
21
 * each case, the [[hasPart]] / [[isPartOf]] properties can be used to relate
22
 * the CreativeWorkSeries to its parts. The general CreativeWorkSeries type
23
 * serves largely just to organize these more specific and practical subtypes.
24
 * 
25
 * It is common for properties applicable to an item from the series to be
26
 * usefully applied to the containing group. Schema.org attempts to anticipate
27
 * some of these cases, but publishers should be free to apply properties of the
28
 * series parts to the series as a whole wherever they seem appropriate.
29
 *
30
 * @see http://schema.org/CreativeWorkSeries
31
 *
32
 */
33
class CreativeWorkSeries extends BaseType implements CreativeWorkSeriesContract, CreativeWorkContract, IntangibleContract, SeriesContract, ThingContract
34
{
35
    /**
36
     * The subject matter of the content.
37
     *
38
     * @param \Spatie\SchemaOrg\Contracts\ThingContract|\Spatie\SchemaOrg\Contracts\ThingContract[] $about
39
     *
40
     * @return static
41
     *
42
     * @see http://schema.org/about
43
     */
44
    public function about($about)
45
    {
46
        return $this->setProperty('about', $about);
47
    }
48
49
    /**
50
     * The human sensory perceptual system or cognitive faculty through which a
51
     * person may process or perceive information. Expected values include:
52
     * auditory, tactile, textual, visual, colorDependent, chartOnVisual,
53
     * chemOnVisual, diagramOnVisual, mathOnVisual, musicOnVisual, textOnVisual.
54
     *
55
     * @param string|string[] $accessMode
56
     *
57
     * @return static
58
     *
59
     * @see http://schema.org/accessMode
60
     */
61
    public function accessMode($accessMode)
62
    {
63
        return $this->setProperty('accessMode', $accessMode);
64
    }
65
66
    /**
67
     * A list of single or combined accessModes that are sufficient to
68
     * understand all the intellectual content of a resource. Expected values
69
     * include:  auditory, tactile, textual, visual.
70
     *
71
     * @param \Spatie\SchemaOrg\Contracts\ItemListContract|\Spatie\SchemaOrg\Contracts\ItemListContract[] $accessModeSufficient
72
     *
73
     * @return static
74
     *
75
     * @see http://schema.org/accessModeSufficient
76
     */
77
    public function accessModeSufficient($accessModeSufficient)
78
    {
79
        return $this->setProperty('accessModeSufficient', $accessModeSufficient);
80
    }
81
82
    /**
83
     * Indicates that the resource is compatible with the referenced
84
     * accessibility API ([WebSchemas wiki lists possible
85
     * values](http://www.w3.org/wiki/WebSchemas/Accessibility)).
86
     *
87
     * @param string|string[] $accessibilityAPI
88
     *
89
     * @return static
90
     *
91
     * @see http://schema.org/accessibilityAPI
92
     */
93
    public function accessibilityAPI($accessibilityAPI)
94
    {
95
        return $this->setProperty('accessibilityAPI', $accessibilityAPI);
96
    }
97
98
    /**
99
     * Identifies input methods that are sufficient to fully control the
100
     * described resource ([WebSchemas wiki lists possible
101
     * values](http://www.w3.org/wiki/WebSchemas/Accessibility)).
102
     *
103
     * @param string|string[] $accessibilityControl
104
     *
105
     * @return static
106
     *
107
     * @see http://schema.org/accessibilityControl
108
     */
109
    public function accessibilityControl($accessibilityControl)
110
    {
111
        return $this->setProperty('accessibilityControl', $accessibilityControl);
112
    }
113
114
    /**
115
     * Content features of the resource, such as accessible media, alternatives
116
     * and supported enhancements for accessibility ([WebSchemas wiki lists
117
     * possible values](http://www.w3.org/wiki/WebSchemas/Accessibility)).
118
     *
119
     * @param string|string[] $accessibilityFeature
120
     *
121
     * @return static
122
     *
123
     * @see http://schema.org/accessibilityFeature
124
     */
125
    public function accessibilityFeature($accessibilityFeature)
126
    {
127
        return $this->setProperty('accessibilityFeature', $accessibilityFeature);
128
    }
129
130
    /**
131
     * A characteristic of the described resource that is physiologically
132
     * dangerous to some users. Related to WCAG 2.0 guideline 2.3 ([WebSchemas
133
     * wiki lists possible
134
     * values](http://www.w3.org/wiki/WebSchemas/Accessibility)).
135
     *
136
     * @param string|string[] $accessibilityHazard
137
     *
138
     * @return static
139
     *
140
     * @see http://schema.org/accessibilityHazard
141
     */
142
    public function accessibilityHazard($accessibilityHazard)
143
    {
144
        return $this->setProperty('accessibilityHazard', $accessibilityHazard);
145
    }
146
147
    /**
148
     * A human-readable summary of specific accessibility features or
149
     * deficiencies, consistent with the other accessibility metadata but
150
     * expressing subtleties such as "short descriptions are present but long
151
     * descriptions will be needed for non-visual users" or "short descriptions
152
     * are present and no long descriptions are needed."
153
     *
154
     * @param string|string[] $accessibilitySummary
155
     *
156
     * @return static
157
     *
158
     * @see http://schema.org/accessibilitySummary
159
     */
160
    public function accessibilitySummary($accessibilitySummary)
161
    {
162
        return $this->setProperty('accessibilitySummary', $accessibilitySummary);
163
    }
164
165
    /**
166
     * Specifies the Person that is legally accountable for the CreativeWork.
167
     *
168
     * @param \Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $accountablePerson
169
     *
170
     * @return static
171
     *
172
     * @see http://schema.org/accountablePerson
173
     */
174
    public function accountablePerson($accountablePerson)
175
    {
176
        return $this->setProperty('accountablePerson', $accountablePerson);
177
    }
178
179
    /**
180
     * An additional type for the item, typically used for adding more specific
181
     * types from external vocabularies in microdata syntax. This is a
182
     * relationship between something and a class that the thing is in. In RDFa
183
     * syntax, it is better to use the native RDFa syntax - the 'typeof'
184
     * attribute - for multiple types. Schema.org tools may have only weaker
185
     * understanding of extra types, in particular those defined externally.
186
     *
187
     * @param string|string[] $additionalType
188
     *
189
     * @return static
190
     *
191
     * @see http://schema.org/additionalType
192
     */
193
    public function additionalType($additionalType)
194
    {
195
        return $this->setProperty('additionalType', $additionalType);
196
    }
197
198
    /**
199
     * The overall rating, based on a collection of reviews or ratings, of the
200
     * item.
201
     *
202
     * @param \Spatie\SchemaOrg\Contracts\AggregateRatingContract|\Spatie\SchemaOrg\Contracts\AggregateRatingContract[] $aggregateRating
203
     *
204
     * @return static
205
     *
206
     * @see http://schema.org/aggregateRating
207
     */
208
    public function aggregateRating($aggregateRating)
209
    {
210
        return $this->setProperty('aggregateRating', $aggregateRating);
211
    }
212
213
    /**
214
     * An alias for the item.
215
     *
216
     * @param string|string[] $alternateName
217
     *
218
     * @return static
219
     *
220
     * @see http://schema.org/alternateName
221
     */
222
    public function alternateName($alternateName)
223
    {
224
        return $this->setProperty('alternateName', $alternateName);
225
    }
226
227
    /**
228
     * A secondary title of the CreativeWork.
229
     *
230
     * @param string|string[] $alternativeHeadline
231
     *
232
     * @return static
233
     *
234
     * @see http://schema.org/alternativeHeadline
235
     */
236
    public function alternativeHeadline($alternativeHeadline)
237
    {
238
        return $this->setProperty('alternativeHeadline', $alternativeHeadline);
239
    }
240
241
    /**
242
     * A media object that encodes this CreativeWork. This property is a synonym
243
     * for encoding.
244
     *
245
     * @param \Spatie\SchemaOrg\Contracts\MediaObjectContract|\Spatie\SchemaOrg\Contracts\MediaObjectContract[] $associatedMedia
246
     *
247
     * @return static
248
     *
249
     * @see http://schema.org/associatedMedia
250
     */
251
    public function associatedMedia($associatedMedia)
252
    {
253
        return $this->setProperty('associatedMedia', $associatedMedia);
254
    }
255
256
    /**
257
     * An intended audience, i.e. a group for whom something was created.
258
     *
259
     * @param \Spatie\SchemaOrg\Contracts\AudienceContract|\Spatie\SchemaOrg\Contracts\AudienceContract[] $audience
260
     *
261
     * @return static
262
     *
263
     * @see http://schema.org/audience
264
     */
265
    public function audience($audience)
266
    {
267
        return $this->setProperty('audience', $audience);
268
    }
269
270
    /**
271
     * An embedded audio object.
272
     *
273
     * @param \Spatie\SchemaOrg\Contracts\AudioObjectContract|\Spatie\SchemaOrg\Contracts\AudioObjectContract[]|\Spatie\SchemaOrg\Contracts\ClipContract|\Spatie\SchemaOrg\Contracts\ClipContract[] $audio
274
     *
275
     * @return static
276
     *
277
     * @see http://schema.org/audio
278
     */
279
    public function audio($audio)
280
    {
281
        return $this->setProperty('audio', $audio);
282
    }
283
284
    /**
285
     * The author of this content or rating. Please note that author is special
286
     * in that HTML 5 provides a special mechanism for indicating authorship via
287
     * the rel tag. That is equivalent to this and may be used interchangeably.
288
     *
289
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $author
290
     *
291
     * @return static
292
     *
293
     * @see http://schema.org/author
294
     */
295
    public function author($author)
296
    {
297
        return $this->setProperty('author', $author);
298
    }
299
300
    /**
301
     * An award won by or for this item.
302
     *
303
     * @param string|string[] $award
304
     *
305
     * @return static
306
     *
307
     * @see http://schema.org/award
308
     */
309
    public function award($award)
310
    {
311
        return $this->setProperty('award', $award);
312
    }
313
314
    /**
315
     * Awards won by or for this item.
316
     *
317
     * @param string|string[] $awards
318
     *
319
     * @return static
320
     *
321
     * @see http://schema.org/awards
322
     */
323
    public function awards($awards)
324
    {
325
        return $this->setProperty('awards', $awards);
326
    }
327
328
    /**
329
     * Fictional person connected with a creative work.
330
     *
331
     * @param \Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $character
332
     *
333
     * @return static
334
     *
335
     * @see http://schema.org/character
336
     */
337
    public function character($character)
338
    {
339
        return $this->setProperty('character', $character);
340
    }
341
342
    /**
343
     * A citation or reference to another creative work, such as another
344
     * publication, web page, scholarly article, etc.
345
     *
346
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|string|string[] $citation
347
     *
348
     * @return static
349
     *
350
     * @see http://schema.org/citation
351
     */
352
    public function citation($citation)
353
    {
354
        return $this->setProperty('citation', $citation);
355
    }
356
357
    /**
358
     * Comments, typically from users.
359
     *
360
     * @param \Spatie\SchemaOrg\Contracts\CommentContract|\Spatie\SchemaOrg\Contracts\CommentContract[] $comment
361
     *
362
     * @return static
363
     *
364
     * @see http://schema.org/comment
365
     */
366
    public function comment($comment)
367
    {
368
        return $this->setProperty('comment', $comment);
369
    }
370
371
    /**
372
     * The number of comments this CreativeWork (e.g. Article, Question or
373
     * Answer) has received. This is most applicable to works published in Web
374
     * sites with commenting system; additional comments may exist elsewhere.
375
     *
376
     * @param int|int[] $commentCount
377
     *
378
     * @return static
379
     *
380
     * @see http://schema.org/commentCount
381
     */
382
    public function commentCount($commentCount)
383
    {
384
        return $this->setProperty('commentCount', $commentCount);
385
    }
386
387
    /**
388
     * The location depicted or described in the content. For example, the
389
     * location in a photograph or painting.
390
     *
391
     * @param \Spatie\SchemaOrg\Contracts\PlaceContract|\Spatie\SchemaOrg\Contracts\PlaceContract[] $contentLocation
392
     *
393
     * @return static
394
     *
395
     * @see http://schema.org/contentLocation
396
     */
397
    public function contentLocation($contentLocation)
398
    {
399
        return $this->setProperty('contentLocation', $contentLocation);
400
    }
401
402
    /**
403
     * Official rating of a piece of content&#x2014;for example,'MPAA PG-13'.
404
     *
405
     * @param \Spatie\SchemaOrg\Contracts\RatingContract|\Spatie\SchemaOrg\Contracts\RatingContract[]|string|string[] $contentRating
406
     *
407
     * @return static
408
     *
409
     * @see http://schema.org/contentRating
410
     */
411
    public function contentRating($contentRating)
412
    {
413
        return $this->setProperty('contentRating', $contentRating);
414
    }
415
416
    /**
417
     * A secondary contributor to the CreativeWork or Event.
418
     *
419
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $contributor
420
     *
421
     * @return static
422
     *
423
     * @see http://schema.org/contributor
424
     */
425
    public function contributor($contributor)
426
    {
427
        return $this->setProperty('contributor', $contributor);
428
    }
429
430
    /**
431
     * The party holding the legal copyright to the CreativeWork.
432
     *
433
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $copyrightHolder
434
     *
435
     * @return static
436
     *
437
     * @see http://schema.org/copyrightHolder
438
     */
439
    public function copyrightHolder($copyrightHolder)
440
    {
441
        return $this->setProperty('copyrightHolder', $copyrightHolder);
442
    }
443
444
    /**
445
     * The year during which the claimed copyright for the CreativeWork was
446
     * first asserted.
447
     *
448
     * @param float|float[]|int|int[] $copyrightYear
449
     *
450
     * @return static
451
     *
452
     * @see http://schema.org/copyrightYear
453
     */
454
    public function copyrightYear($copyrightYear)
455
    {
456
        return $this->setProperty('copyrightYear', $copyrightYear);
457
    }
458
459
    /**
460
     * The creator/author of this CreativeWork. This is the same as the Author
461
     * property for CreativeWork.
462
     *
463
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $creator
464
     *
465
     * @return static
466
     *
467
     * @see http://schema.org/creator
468
     */
469
    public function creator($creator)
470
    {
471
        return $this->setProperty('creator', $creator);
472
    }
473
474
    /**
475
     * The date on which the CreativeWork was created or the item was added to a
476
     * DataFeed.
477
     *
478
     * @param \DateTimeInterface|\DateTimeInterface[] $dateCreated
479
     *
480
     * @return static
481
     *
482
     * @see http://schema.org/dateCreated
483
     */
484
    public function dateCreated($dateCreated)
485
    {
486
        return $this->setProperty('dateCreated', $dateCreated);
487
    }
488
489
    /**
490
     * The date on which the CreativeWork was most recently modified or when the
491
     * item's entry was modified within a DataFeed.
492
     *
493
     * @param \DateTimeInterface|\DateTimeInterface[] $dateModified
494
     *
495
     * @return static
496
     *
497
     * @see http://schema.org/dateModified
498
     */
499
    public function dateModified($dateModified)
500
    {
501
        return $this->setProperty('dateModified', $dateModified);
502
    }
503
504
    /**
505
     * Date of first broadcast/publication.
506
     *
507
     * @param \DateTimeInterface|\DateTimeInterface[] $datePublished
508
     *
509
     * @return static
510
     *
511
     * @see http://schema.org/datePublished
512
     */
513
    public function datePublished($datePublished)
514
    {
515
        return $this->setProperty('datePublished', $datePublished);
516
    }
517
518
    /**
519
     * A description of the item.
520
     *
521
     * @param string|string[] $description
522
     *
523
     * @return static
524
     *
525
     * @see http://schema.org/description
526
     */
527
    public function description($description)
528
    {
529
        return $this->setProperty('description', $description);
530
    }
531
532
    /**
533
     * A director of e.g. tv, radio, movie, video gaming etc. content, or of an
534
     * event. Directors can be associated with individual items or with a
535
     * series, episode, clip.
536
     *
537
     * @param \Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $director
538
     *
539
     * @return static
540
     *
541
     * @see http://schema.org/director
542
     */
543
    public function director($director)
544
    {
545
        return $this->setProperty('director', $director);
546
    }
547
548
    /**
549
     * A sub property of description. A short description of the item used to
550
     * disambiguate from other, similar items. Information from other properties
551
     * (in particular, name) may be necessary for the description to be useful
552
     * for disambiguation.
553
     *
554
     * @param string|string[] $disambiguatingDescription
555
     *
556
     * @return static
557
     *
558
     * @see http://schema.org/disambiguatingDescription
559
     */
560
    public function disambiguatingDescription($disambiguatingDescription)
561
    {
562
        return $this->setProperty('disambiguatingDescription', $disambiguatingDescription);
563
    }
564
565
    /**
566
     * A link to the page containing the comments of the CreativeWork.
567
     *
568
     * @param string|string[] $discussionUrl
569
     *
570
     * @return static
571
     *
572
     * @see http://schema.org/discussionUrl
573
     */
574
    public function discussionUrl($discussionUrl)
575
    {
576
        return $this->setProperty('discussionUrl', $discussionUrl);
577
    }
578
579
    /**
580
     * Specifies the Person who edited the CreativeWork.
581
     *
582
     * @param \Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $editor
583
     *
584
     * @return static
585
     *
586
     * @see http://schema.org/editor
587
     */
588
    public function editor($editor)
589
    {
590
        return $this->setProperty('editor', $editor);
591
    }
592
593
    /**
594
     * An alignment to an established educational framework.
595
     *
596
     * @param \Spatie\SchemaOrg\Contracts\AlignmentObjectContract|\Spatie\SchemaOrg\Contracts\AlignmentObjectContract[] $educationalAlignment
597
     *
598
     * @return static
599
     *
600
     * @see http://schema.org/educationalAlignment
601
     */
602
    public function educationalAlignment($educationalAlignment)
603
    {
604
        return $this->setProperty('educationalAlignment', $educationalAlignment);
605
    }
606
607
    /**
608
     * The purpose of a work in the context of education; for example,
609
     * 'assignment', 'group work'.
610
     *
611
     * @param string|string[] $educationalUse
612
     *
613
     * @return static
614
     *
615
     * @see http://schema.org/educationalUse
616
     */
617
    public function educationalUse($educationalUse)
618
    {
619
        return $this->setProperty('educationalUse', $educationalUse);
620
    }
621
622
    /**
623
     * A media object that encodes this CreativeWork. This property is a synonym
624
     * for associatedMedia.
625
     *
626
     * @param \Spatie\SchemaOrg\Contracts\MediaObjectContract|\Spatie\SchemaOrg\Contracts\MediaObjectContract[] $encoding
627
     *
628
     * @return static
629
     *
630
     * @see http://schema.org/encoding
631
     */
632
    public function encoding($encoding)
633
    {
634
        return $this->setProperty('encoding', $encoding);
635
    }
636
637
    /**
638
     * Media type typically expressed using a MIME format (see [IANA
639
     * site](http://www.iana.org/assignments/media-types/media-types.xhtml) and
640
     * [MDN
641
     * reference](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types))
642
     * e.g. application/zip for a SoftwareApplication binary, audio/mpeg for
643
     * .mp3 etc.).
644
     * 
645
     * In cases where a [[CreativeWork]] has several media type representations,
646
     * [[encoding]] can be used to indicate each [[MediaObject]] alongside
647
     * particular [[encodingFormat]] information.
648
     * 
649
     * Unregistered or niche encoding and file formats can be indicated instead
650
     * via the most appropriate URL, e.g. defining Web page or a
651
     * Wikipedia/Wikidata entry.
652
     *
653
     * @param string|string[] $encodingFormat
654
     *
655
     * @return static
656
     *
657
     * @see http://schema.org/encodingFormat
658
     */
659
    public function encodingFormat($encodingFormat)
660
    {
661
        return $this->setProperty('encodingFormat', $encodingFormat);
662
    }
663
664
    /**
665
     * A media object that encodes this CreativeWork.
666
     *
667
     * @param \Spatie\SchemaOrg\Contracts\MediaObjectContract|\Spatie\SchemaOrg\Contracts\MediaObjectContract[] $encodings
668
     *
669
     * @return static
670
     *
671
     * @see http://schema.org/encodings
672
     */
673
    public function encodings($encodings)
674
    {
675
        return $this->setProperty('encodings', $encodings);
676
    }
677
678
    /**
679
     * The end date and time of the item (in [ISO 8601 date
680
     * format](http://en.wikipedia.org/wiki/ISO_8601)).
681
     *
682
     * @param \DateTimeInterface|\DateTimeInterface[] $endDate
683
     *
684
     * @return static
685
     *
686
     * @see http://schema.org/endDate
687
     */
688
    public function endDate($endDate)
689
    {
690
        return $this->setProperty('endDate', $endDate);
691
    }
692
693
    /**
694
     * A creative work that this work is an
695
     * example/instance/realization/derivation of.
696
     *
697
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[] $exampleOfWork
698
     *
699
     * @return static
700
     *
701
     * @see http://schema.org/exampleOfWork
702
     */
703
    public function exampleOfWork($exampleOfWork)
704
    {
705
        return $this->setProperty('exampleOfWork', $exampleOfWork);
706
    }
707
708
    /**
709
     * Date the content expires and is no longer useful or available. For
710
     * example a [[VideoObject]] or [[NewsArticle]] whose availability or
711
     * relevance is time-limited, or a [[ClaimReview]] fact check whose
712
     * publisher wants to indicate that it may no longer be relevant (or helpful
713
     * to highlight) after some date.
714
     *
715
     * @param \DateTimeInterface|\DateTimeInterface[] $expires
716
     *
717
     * @return static
718
     *
719
     * @see http://schema.org/expires
720
     */
721
    public function expires($expires)
722
    {
723
        return $this->setProperty('expires', $expires);
724
    }
725
726
    /**
727
     * Media type, typically MIME format (see [IANA
728
     * site](http://www.iana.org/assignments/media-types/media-types.xhtml)) of
729
     * the content e.g. application/zip of a SoftwareApplication binary. In
730
     * cases where a CreativeWork has several media type representations,
731
     * 'encoding' can be used to indicate each MediaObject alongside particular
732
     * fileFormat information. Unregistered or niche file formats can be
733
     * indicated instead via the most appropriate URL, e.g. defining Web page or
734
     * a Wikipedia entry.
735
     *
736
     * @param string|string[] $fileFormat
737
     *
738
     * @return static
739
     *
740
     * @see http://schema.org/fileFormat
741
     */
742
    public function fileFormat($fileFormat)
743
    {
744
        return $this->setProperty('fileFormat', $fileFormat);
745
    }
746
747
    /**
748
     * A person or organization that supports (sponsors) something through some
749
     * kind of financial contribution.
750
     *
751
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $funder
752
     *
753
     * @return static
754
     *
755
     * @see http://schema.org/funder
756
     */
757
    public function funder($funder)
758
    {
759
        return $this->setProperty('funder', $funder);
760
    }
761
762
    /**
763
     * Genre of the creative work, broadcast channel or group.
764
     *
765
     * @param string|string[] $genre
766
     *
767
     * @return static
768
     *
769
     * @see http://schema.org/genre
770
     */
771
    public function genre($genre)
772
    {
773
        return $this->setProperty('genre', $genre);
774
    }
775
776
    /**
777
     * Indicates an item or CreativeWork that is part of this item, or
778
     * CreativeWork (in some sense).
779
     *
780
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[] $hasPart
781
     *
782
     * @return static
783
     *
784
     * @see http://schema.org/hasPart
785
     */
786
    public function hasPart($hasPart)
787
    {
788
        return $this->setProperty('hasPart', $hasPart);
789
    }
790
791
    /**
792
     * Headline of the article.
793
     *
794
     * @param string|string[] $headline
795
     *
796
     * @return static
797
     *
798
     * @see http://schema.org/headline
799
     */
800
    public function headline($headline)
801
    {
802
        return $this->setProperty('headline', $headline);
803
    }
804
805
    /**
806
     * The identifier property represents any kind of identifier for any kind of
807
     * [[Thing]], such as ISBNs, GTIN codes, UUIDs etc. Schema.org provides
808
     * dedicated properties for representing many of these, either as textual
809
     * strings or as URL (URI) links. See [background
810
     * notes](/docs/datamodel.html#identifierBg) for more details.
811
     *
812
     * @param \Spatie\SchemaOrg\Contracts\PropertyValueContract|\Spatie\SchemaOrg\Contracts\PropertyValueContract[]|string|string[] $identifier
813
     *
814
     * @return static
815
     *
816
     * @see http://schema.org/identifier
817
     */
818
    public function identifier($identifier)
819
    {
820
        return $this->setProperty('identifier', $identifier);
821
    }
822
823
    /**
824
     * An image of the item. This can be a [[URL]] or a fully described
825
     * [[ImageObject]].
826
     *
827
     * @param \Spatie\SchemaOrg\Contracts\ImageObjectContract|\Spatie\SchemaOrg\Contracts\ImageObjectContract[]|string|string[] $image
828
     *
829
     * @return static
830
     *
831
     * @see http://schema.org/image
832
     */
833
    public function image($image)
834
    {
835
        return $this->setProperty('image', $image);
836
    }
837
838
    /**
839
     * The language of the content or performance or used in an action. Please
840
     * use one of the language codes from the [IETF BCP 47
841
     * standard](http://tools.ietf.org/html/bcp47). See also
842
     * [[availableLanguage]].
843
     *
844
     * @param \Spatie\SchemaOrg\Contracts\LanguageContract|\Spatie\SchemaOrg\Contracts\LanguageContract[]|string|string[] $inLanguage
845
     *
846
     * @return static
847
     *
848
     * @see http://schema.org/inLanguage
849
     */
850
    public function inLanguage($inLanguage)
851
    {
852
        return $this->setProperty('inLanguage', $inLanguage);
853
    }
854
855
    /**
856
     * The number of interactions for the CreativeWork using the WebSite or
857
     * SoftwareApplication. The most specific child type of InteractionCounter
858
     * should be used.
859
     *
860
     * @param \Spatie\SchemaOrg\Contracts\InteractionCounterContract|\Spatie\SchemaOrg\Contracts\InteractionCounterContract[] $interactionStatistic
861
     *
862
     * @return static
863
     *
864
     * @see http://schema.org/interactionStatistic
865
     */
866
    public function interactionStatistic($interactionStatistic)
867
    {
868
        return $this->setProperty('interactionStatistic', $interactionStatistic);
869
    }
870
871
    /**
872
     * The predominant mode of learning supported by the learning resource.
873
     * Acceptable values are 'active', 'expositive', or 'mixed'.
874
     *
875
     * @param string|string[] $interactivityType
876
     *
877
     * @return static
878
     *
879
     * @see http://schema.org/interactivityType
880
     */
881
    public function interactivityType($interactivityType)
882
    {
883
        return $this->setProperty('interactivityType', $interactivityType);
884
    }
885
886
    /**
887
     * A flag to signal that the item, event, or place is accessible for free.
888
     *
889
     * @param bool|bool[] $isAccessibleForFree
890
     *
891
     * @return static
892
     *
893
     * @see http://schema.org/isAccessibleForFree
894
     */
895
    public function isAccessibleForFree($isAccessibleForFree)
896
    {
897
        return $this->setProperty('isAccessibleForFree', $isAccessibleForFree);
898
    }
899
900
    /**
901
     * A resource from which this work is derived or from which it is a
902
     * modification or adaption.
903
     *
904
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|\Spatie\SchemaOrg\Contracts\ProductContract|\Spatie\SchemaOrg\Contracts\ProductContract[]|string|string[] $isBasedOn
905
     *
906
     * @return static
907
     *
908
     * @see http://schema.org/isBasedOn
909
     */
910
    public function isBasedOn($isBasedOn)
911
    {
912
        return $this->setProperty('isBasedOn', $isBasedOn);
913
    }
914
915
    /**
916
     * A resource that was used in the creation of this resource. This term can
917
     * be repeated for multiple sources. For example,
918
     * http://example.com/great-multiplication-intro.html.
919
     *
920
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|\Spatie\SchemaOrg\Contracts\ProductContract|\Spatie\SchemaOrg\Contracts\ProductContract[]|string|string[] $isBasedOnUrl
921
     *
922
     * @return static
923
     *
924
     * @see http://schema.org/isBasedOnUrl
925
     */
926
    public function isBasedOnUrl($isBasedOnUrl)
927
    {
928
        return $this->setProperty('isBasedOnUrl', $isBasedOnUrl);
929
    }
930
931
    /**
932
     * Indicates whether this content is family friendly.
933
     *
934
     * @param bool|bool[] $isFamilyFriendly
935
     *
936
     * @return static
937
     *
938
     * @see http://schema.org/isFamilyFriendly
939
     */
940
    public function isFamilyFriendly($isFamilyFriendly)
941
    {
942
        return $this->setProperty('isFamilyFriendly', $isFamilyFriendly);
943
    }
944
945
    /**
946
     * Indicates an item or CreativeWork that this item, or CreativeWork (in
947
     * some sense), is part of.
948
     *
949
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|string|string[] $isPartOf
950
     *
951
     * @return static
952
     *
953
     * @see http://schema.org/isPartOf
954
     */
955
    public function isPartOf($isPartOf)
956
    {
957
        return $this->setProperty('isPartOf', $isPartOf);
958
    }
959
960
    /**
961
     * The International Standard Serial Number (ISSN) that identifies this
962
     * serial publication. You can repeat this property to identify different
963
     * formats of, or the linking ISSN (ISSN-L) for, this serial publication.
964
     *
965
     * @param string|string[] $issn
966
     *
967
     * @return static
968
     *
969
     * @see http://schema.org/issn
970
     */
971
    public function issn($issn)
972
    {
973
        return $this->setProperty('issn', $issn);
974
    }
975
976
    /**
977
     * Keywords or tags used to describe this content. Multiple entries in a
978
     * keywords list are typically delimited by commas.
979
     *
980
     * @param string|string[] $keywords
981
     *
982
     * @return static
983
     *
984
     * @see http://schema.org/keywords
985
     */
986
    public function keywords($keywords)
987
    {
988
        return $this->setProperty('keywords', $keywords);
989
    }
990
991
    /**
992
     * The predominant type or kind characterizing the learning resource. For
993
     * example, 'presentation', 'handout'.
994
     *
995
     * @param string|string[] $learningResourceType
996
     *
997
     * @return static
998
     *
999
     * @see http://schema.org/learningResourceType
1000
     */
1001
    public function learningResourceType($learningResourceType)
1002
    {
1003
        return $this->setProperty('learningResourceType', $learningResourceType);
1004
    }
1005
1006
    /**
1007
     * A license document that applies to this content, typically indicated by
1008
     * URL.
1009
     *
1010
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|string|string[] $license
1011
     *
1012
     * @return static
1013
     *
1014
     * @see http://schema.org/license
1015
     */
1016
    public function license($license)
1017
    {
1018
        return $this->setProperty('license', $license);
1019
    }
1020
1021
    /**
1022
     * The location where the CreativeWork was created, which may not be the
1023
     * same as the location depicted in the CreativeWork.
1024
     *
1025
     * @param \Spatie\SchemaOrg\Contracts\PlaceContract|\Spatie\SchemaOrg\Contracts\PlaceContract[] $locationCreated
1026
     *
1027
     * @return static
1028
     *
1029
     * @see http://schema.org/locationCreated
1030
     */
1031
    public function locationCreated($locationCreated)
1032
    {
1033
        return $this->setProperty('locationCreated', $locationCreated);
1034
    }
1035
1036
    /**
1037
     * Indicates the primary entity described in some page or other
1038
     * CreativeWork.
1039
     *
1040
     * @param \Spatie\SchemaOrg\Contracts\ThingContract|\Spatie\SchemaOrg\Contracts\ThingContract[] $mainEntity
1041
     *
1042
     * @return static
1043
     *
1044
     * @see http://schema.org/mainEntity
1045
     */
1046
    public function mainEntity($mainEntity)
1047
    {
1048
        return $this->setProperty('mainEntity', $mainEntity);
1049
    }
1050
1051
    /**
1052
     * Indicates a page (or other CreativeWork) for which this thing is the main
1053
     * entity being described. See [background
1054
     * notes](/docs/datamodel.html#mainEntityBackground) for details.
1055
     *
1056
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|string|string[] $mainEntityOfPage
1057
     *
1058
     * @return static
1059
     *
1060
     * @see http://schema.org/mainEntityOfPage
1061
     */
1062
    public function mainEntityOfPage($mainEntityOfPage)
1063
    {
1064
        return $this->setProperty('mainEntityOfPage', $mainEntityOfPage);
1065
    }
1066
1067
    /**
1068
     * A material that something is made from, e.g. leather, wool, cotton,
1069
     * paper.
1070
     *
1071
     * @param \Spatie\SchemaOrg\Contracts\ProductContract|\Spatie\SchemaOrg\Contracts\ProductContract[]|string|string[] $material
1072
     *
1073
     * @return static
1074
     *
1075
     * @see http://schema.org/material
1076
     */
1077
    public function material($material)
1078
    {
1079
        return $this->setProperty('material', $material);
1080
    }
1081
1082
    /**
1083
     * Indicates that the CreativeWork contains a reference to, but is not
1084
     * necessarily about a concept.
1085
     *
1086
     * @param \Spatie\SchemaOrg\Contracts\ThingContract|\Spatie\SchemaOrg\Contracts\ThingContract[] $mentions
1087
     *
1088
     * @return static
1089
     *
1090
     * @see http://schema.org/mentions
1091
     */
1092
    public function mentions($mentions)
1093
    {
1094
        return $this->setProperty('mentions', $mentions);
1095
    }
1096
1097
    /**
1098
     * The name of the item.
1099
     *
1100
     * @param string|string[] $name
1101
     *
1102
     * @return static
1103
     *
1104
     * @see http://schema.org/name
1105
     */
1106
    public function name($name)
1107
    {
1108
        return $this->setProperty('name', $name);
1109
    }
1110
1111
    /**
1112
     * An offer to provide this item&#x2014;for example, an offer to sell a
1113
     * product, rent the DVD of a movie, perform a service, or give away tickets
1114
     * to an event. Use [[businessFunction]] to indicate the kind of transaction
1115
     * offered, i.e. sell, lease, etc. This property can also be used to
1116
     * describe a [[Demand]]. While this property is listed as expected on a
1117
     * number of common types, it can be used in others. In that case, using a
1118
     * second type, such as Product or a subtype of Product, can clarify the
1119
     * nature of the offer.
1120
     *
1121
     * @param \Spatie\SchemaOrg\Contracts\DemandContract|\Spatie\SchemaOrg\Contracts\DemandContract[]|\Spatie\SchemaOrg\Contracts\OfferContract|\Spatie\SchemaOrg\Contracts\OfferContract[] $offers
1122
     *
1123
     * @return static
1124
     *
1125
     * @see http://schema.org/offers
1126
     */
1127
    public function offers($offers)
1128
    {
1129
        return $this->setProperty('offers', $offers);
1130
    }
1131
1132
    /**
1133
     * The position of an item in a series or sequence of items.
1134
     *
1135
     * @param int|int[]|string|string[] $position
1136
     *
1137
     * @return static
1138
     *
1139
     * @see http://schema.org/position
1140
     */
1141
    public function position($position)
1142
    {
1143
        return $this->setProperty('position', $position);
1144
    }
1145
1146
    /**
1147
     * Indicates a potential Action, which describes an idealized action in
1148
     * which this thing would play an 'object' role.
1149
     *
1150
     * @param \Spatie\SchemaOrg\Contracts\ActionContract|\Spatie\SchemaOrg\Contracts\ActionContract[] $potentialAction
1151
     *
1152
     * @return static
1153
     *
1154
     * @see http://schema.org/potentialAction
1155
     */
1156
    public function potentialAction($potentialAction)
1157
    {
1158
        return $this->setProperty('potentialAction', $potentialAction);
1159
    }
1160
1161
    /**
1162
     * The person or organization who produced the work (e.g. music album,
1163
     * movie, tv/radio series etc.).
1164
     *
1165
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $producer
1166
     *
1167
     * @return static
1168
     *
1169
     * @see http://schema.org/producer
1170
     */
1171
    public function producer($producer)
1172
    {
1173
        return $this->setProperty('producer', $producer);
1174
    }
1175
1176
    /**
1177
     * The service provider, service operator, or service performer; the goods
1178
     * producer. Another party (a seller) may offer those services or goods on
1179
     * behalf of the provider. A provider may also serve as the seller.
1180
     *
1181
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $provider
1182
     *
1183
     * @return static
1184
     *
1185
     * @see http://schema.org/provider
1186
     */
1187
    public function provider($provider)
1188
    {
1189
        return $this->setProperty('provider', $provider);
1190
    }
1191
1192
    /**
1193
     * A publication event associated with the item.
1194
     *
1195
     * @param \Spatie\SchemaOrg\Contracts\PublicationEventContract|\Spatie\SchemaOrg\Contracts\PublicationEventContract[] $publication
1196
     *
1197
     * @return static
1198
     *
1199
     * @see http://schema.org/publication
1200
     */
1201
    public function publication($publication)
1202
    {
1203
        return $this->setProperty('publication', $publication);
1204
    }
1205
1206
    /**
1207
     * The publisher of the creative work.
1208
     *
1209
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $publisher
1210
     *
1211
     * @return static
1212
     *
1213
     * @see http://schema.org/publisher
1214
     */
1215
    public function publisher($publisher)
1216
    {
1217
        return $this->setProperty('publisher', $publisher);
1218
    }
1219
1220
    /**
1221
     * The publishingPrinciples property indicates (typically via [[URL]]) a
1222
     * document describing the editorial principles of an [[Organization]] (or
1223
     * individual e.g. a [[Person]] writing a blog) that relate to their
1224
     * activities as a publisher, e.g. ethics or diversity policies. When
1225
     * applied to a [[CreativeWork]] (e.g. [[NewsArticle]]) the principles are
1226
     * those of the party primarily responsible for the creation of the
1227
     * [[CreativeWork]].
1228
     * 
1229
     * While such policies are most typically expressed in natural language,
1230
     * sometimes related information (e.g. indicating a [[funder]]) can be
1231
     * expressed using schema.org terminology.
1232
     *
1233
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|string|string[] $publishingPrinciples
1234
     *
1235
     * @return static
1236
     *
1237
     * @see http://schema.org/publishingPrinciples
1238
     */
1239
    public function publishingPrinciples($publishingPrinciples)
1240
    {
1241
        return $this->setProperty('publishingPrinciples', $publishingPrinciples);
1242
    }
1243
1244
    /**
1245
     * The Event where the CreativeWork was recorded. The CreativeWork may
1246
     * capture all or part of the event.
1247
     *
1248
     * @param \Spatie\SchemaOrg\Contracts\EventContract|\Spatie\SchemaOrg\Contracts\EventContract[] $recordedAt
1249
     *
1250
     * @return static
1251
     *
1252
     * @see http://schema.org/recordedAt
1253
     */
1254
    public function recordedAt($recordedAt)
1255
    {
1256
        return $this->setProperty('recordedAt', $recordedAt);
1257
    }
1258
1259
    /**
1260
     * The place and time the release was issued, expressed as a
1261
     * PublicationEvent.
1262
     *
1263
     * @param \Spatie\SchemaOrg\Contracts\PublicationEventContract|\Spatie\SchemaOrg\Contracts\PublicationEventContract[] $releasedEvent
1264
     *
1265
     * @return static
1266
     *
1267
     * @see http://schema.org/releasedEvent
1268
     */
1269
    public function releasedEvent($releasedEvent)
1270
    {
1271
        return $this->setProperty('releasedEvent', $releasedEvent);
1272
    }
1273
1274
    /**
1275
     * A review of the item.
1276
     *
1277
     * @param \Spatie\SchemaOrg\Contracts\ReviewContract|\Spatie\SchemaOrg\Contracts\ReviewContract[] $review
1278
     *
1279
     * @return static
1280
     *
1281
     * @see http://schema.org/review
1282
     */
1283
    public function review($review)
1284
    {
1285
        return $this->setProperty('review', $review);
1286
    }
1287
1288
    /**
1289
     * Review of the item.
1290
     *
1291
     * @param \Spatie\SchemaOrg\Contracts\ReviewContract|\Spatie\SchemaOrg\Contracts\ReviewContract[] $reviews
1292
     *
1293
     * @return static
1294
     *
1295
     * @see http://schema.org/reviews
1296
     */
1297
    public function reviews($reviews)
1298
    {
1299
        return $this->setProperty('reviews', $reviews);
1300
    }
1301
1302
    /**
1303
     * URL of a reference Web page that unambiguously indicates the item's
1304
     * identity. E.g. the URL of the item's Wikipedia page, Wikidata entry, or
1305
     * official website.
1306
     *
1307
     * @param string|string[] $sameAs
1308
     *
1309
     * @return static
1310
     *
1311
     * @see http://schema.org/sameAs
1312
     */
1313
    public function sameAs($sameAs)
1314
    {
1315
        return $this->setProperty('sameAs', $sameAs);
1316
    }
1317
1318
    /**
1319
     * Indicates (by URL or string) a particular version of a schema used in
1320
     * some CreativeWork. For example, a document could declare a schemaVersion
1321
     * using an URL such as http://schema.org/version/2.0/ if precise indication
1322
     * of schema version was required by some application.
1323
     *
1324
     * @param string|string[] $schemaVersion
1325
     *
1326
     * @return static
1327
     *
1328
     * @see http://schema.org/schemaVersion
1329
     */
1330
    public function schemaVersion($schemaVersion)
1331
    {
1332
        return $this->setProperty('schemaVersion', $schemaVersion);
1333
    }
1334
1335
    /**
1336
     * The Organization on whose behalf the creator was working.
1337
     *
1338
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[] $sourceOrganization
1339
     *
1340
     * @return static
1341
     *
1342
     * @see http://schema.org/sourceOrganization
1343
     */
1344
    public function sourceOrganization($sourceOrganization)
1345
    {
1346
        return $this->setProperty('sourceOrganization', $sourceOrganization);
1347
    }
1348
1349
    /**
1350
     * The "spatial" property can be used in cases when more specific properties
1351
     * (e.g. [[locationCreated]], [[spatialCoverage]], [[contentLocation]]) are
1352
     * not known to be appropriate.
1353
     *
1354
     * @param \Spatie\SchemaOrg\Contracts\PlaceContract|\Spatie\SchemaOrg\Contracts\PlaceContract[] $spatial
1355
     *
1356
     * @return static
1357
     *
1358
     * @see http://schema.org/spatial
1359
     */
1360
    public function spatial($spatial)
1361
    {
1362
        return $this->setProperty('spatial', $spatial);
1363
    }
1364
1365
    /**
1366
     * The spatialCoverage of a CreativeWork indicates the place(s) which are
1367
     * the focus of the content. It is a subproperty of
1368
     *       contentLocation intended primarily for more technical and detailed
1369
     * materials. For example with a Dataset, it indicates
1370
     *       areas that the dataset describes: a dataset of New York weather
1371
     * would have spatialCoverage which was the place: the state of New York.
1372
     *
1373
     * @param \Spatie\SchemaOrg\Contracts\PlaceContract|\Spatie\SchemaOrg\Contracts\PlaceContract[] $spatialCoverage
1374
     *
1375
     * @return static
1376
     *
1377
     * @see http://schema.org/spatialCoverage
1378
     */
1379
    public function spatialCoverage($spatialCoverage)
1380
    {
1381
        return $this->setProperty('spatialCoverage', $spatialCoverage);
1382
    }
1383
1384
    /**
1385
     * A person or organization that supports a thing through a pledge, promise,
1386
     * or financial contribution. e.g. a sponsor of a Medical Study or a
1387
     * corporate sponsor of an event.
1388
     *
1389
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $sponsor
1390
     *
1391
     * @return static
1392
     *
1393
     * @see http://schema.org/sponsor
1394
     */
1395
    public function sponsor($sponsor)
1396
    {
1397
        return $this->setProperty('sponsor', $sponsor);
1398
    }
1399
1400
    /**
1401
     * The start date and time of the item (in [ISO 8601 date
1402
     * format](http://en.wikipedia.org/wiki/ISO_8601)).
1403
     *
1404
     * @param \DateTimeInterface|\DateTimeInterface[] $startDate
1405
     *
1406
     * @return static
1407
     *
1408
     * @see http://schema.org/startDate
1409
     */
1410
    public function startDate($startDate)
1411
    {
1412
        return $this->setProperty('startDate', $startDate);
1413
    }
1414
1415
    /**
1416
     * A CreativeWork or Event about this Thing.
1417
     *
1418
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|\Spatie\SchemaOrg\Contracts\EventContract|\Spatie\SchemaOrg\Contracts\EventContract[] $subjectOf
1419
     *
1420
     * @return static
1421
     *
1422
     * @see http://schema.org/subjectOf
1423
     */
1424
    public function subjectOf($subjectOf)
1425
    {
1426
        return $this->setProperty('subjectOf', $subjectOf);
1427
    }
1428
1429
    /**
1430
     * The "temporal" property can be used in cases where more specific
1431
     * properties
1432
     * (e.g. [[temporalCoverage]], [[dateCreated]], [[dateModified]],
1433
     * [[datePublished]]) are not known to be appropriate.
1434
     *
1435
     * @param \DateTimeInterface|\DateTimeInterface[]|string|string[] $temporal
1436
     *
1437
     * @return static
1438
     *
1439
     * @see http://schema.org/temporal
1440
     */
1441
    public function temporal($temporal)
1442
    {
1443
        return $this->setProperty('temporal', $temporal);
1444
    }
1445
1446
    /**
1447
     * The temporalCoverage of a CreativeWork indicates the period that the
1448
     * content applies to, i.e. that it describes, either as a DateTime or as a
1449
     * textual string indicating a time period in [ISO 8601 time interval
1450
     * format](https://en.wikipedia.org/wiki/ISO_8601#Time_intervals). In
1451
     *       the case of a Dataset it will typically indicate the relevant time
1452
     * period in a precise notation (e.g. for a 2011 census dataset, the year
1453
     * 2011 would be written "2011/2012"). Other forms of content e.g.
1454
     * ScholarlyArticle, Book, TVSeries or TVEpisode may indicate their
1455
     * temporalCoverage in broader terms - textually or via well-known URL.
1456
     *       Written works such as books may sometimes have precise temporal
1457
     * coverage too, e.g. a work set in 1939 - 1945 can be indicated in ISO 8601
1458
     * interval format format via "1939/1945".
1459
     * 
1460
     * Open-ended date ranges can be written with ".." in place of the end date.
1461
     * For example, "2015-11/.." indicates a range beginning in November 2015
1462
     * and with no specified final date. This is tentative and might be updated
1463
     * in future when ISO 8601 is officially updated.
1464
     *
1465
     * @param \DateTimeInterface|\DateTimeInterface[]|string|string[] $temporalCoverage
1466
     *
1467
     * @return static
1468
     *
1469
     * @see http://schema.org/temporalCoverage
1470
     */
1471
    public function temporalCoverage($temporalCoverage)
1472
    {
1473
        return $this->setProperty('temporalCoverage', $temporalCoverage);
1474
    }
1475
1476
    /**
1477
     * The textual content of this CreativeWork.
1478
     *
1479
     * @param string|string[] $text
1480
     *
1481
     * @return static
1482
     *
1483
     * @see http://schema.org/text
1484
     */
1485
    public function text($text)
1486
    {
1487
        return $this->setProperty('text', $text);
1488
    }
1489
1490
    /**
1491
     * A thumbnail image relevant to the Thing.
1492
     *
1493
     * @param string|string[] $thumbnailUrl
1494
     *
1495
     * @return static
1496
     *
1497
     * @see http://schema.org/thumbnailUrl
1498
     */
1499
    public function thumbnailUrl($thumbnailUrl)
1500
    {
1501
        return $this->setProperty('thumbnailUrl', $thumbnailUrl);
1502
    }
1503
1504
    /**
1505
     * Approximate or typical time it takes to work with or through this
1506
     * learning resource for the typical intended target audience, e.g. 'PT30M',
1507
     * 'PT1H25M'.
1508
     *
1509
     * @param \Spatie\SchemaOrg\Contracts\DurationContract|\Spatie\SchemaOrg\Contracts\DurationContract[] $timeRequired
1510
     *
1511
     * @return static
1512
     *
1513
     * @see http://schema.org/timeRequired
1514
     */
1515
    public function timeRequired($timeRequired)
1516
    {
1517
        return $this->setProperty('timeRequired', $timeRequired);
1518
    }
1519
1520
    /**
1521
     * Organization or person who adapts a creative work to different languages,
1522
     * regional differences and technical requirements of a target market, or
1523
     * that translates during some event.
1524
     *
1525
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $translator
1526
     *
1527
     * @return static
1528
     *
1529
     * @see http://schema.org/translator
1530
     */
1531
    public function translator($translator)
1532
    {
1533
        return $this->setProperty('translator', $translator);
1534
    }
1535
1536
    /**
1537
     * The typical expected age range, e.g. '7-9', '11-'.
1538
     *
1539
     * @param string|string[] $typicalAgeRange
1540
     *
1541
     * @return static
1542
     *
1543
     * @see http://schema.org/typicalAgeRange
1544
     */
1545
    public function typicalAgeRange($typicalAgeRange)
1546
    {
1547
        return $this->setProperty('typicalAgeRange', $typicalAgeRange);
1548
    }
1549
1550
    /**
1551
     * URL of the item.
1552
     *
1553
     * @param string|string[] $url
1554
     *
1555
     * @return static
1556
     *
1557
     * @see http://schema.org/url
1558
     */
1559
    public function url($url)
1560
    {
1561
        return $this->setProperty('url', $url);
1562
    }
1563
1564
    /**
1565
     * The version of the CreativeWork embodied by a specified resource.
1566
     *
1567
     * @param float|float[]|int|int[]|string|string[] $version
1568
     *
1569
     * @return static
1570
     *
1571
     * @see http://schema.org/version
1572
     */
1573
    public function version($version)
1574
    {
1575
        return $this->setProperty('version', $version);
1576
    }
1577
1578
    /**
1579
     * An embedded video object.
1580
     *
1581
     * @param \Spatie\SchemaOrg\Contracts\ClipContract|\Spatie\SchemaOrg\Contracts\ClipContract[]|\Spatie\SchemaOrg\Contracts\VideoObjectContract|\Spatie\SchemaOrg\Contracts\VideoObjectContract[] $video
1582
     *
1583
     * @return static
1584
     *
1585
     * @see http://schema.org/video
1586
     */
1587
    public function video($video)
1588
    {
1589
        return $this->setProperty('video', $video);
1590
    }
1591
1592
    /**
1593
     * Example/instance/realization/derivation of the concept of this creative
1594
     * work. eg. The paperback edition, first edition, or eBook.
1595
     *
1596
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[] $workExample
1597
     *
1598
     * @return static
1599
     *
1600
     * @see http://schema.org/workExample
1601
     */
1602
    public function workExample($workExample)
1603
    {
1604
        return $this->setProperty('workExample', $workExample);
1605
    }
1606
1607
}
1608