ClaimReview   F
last analyzed

Complexity

Total Complexity 102

Size/Duplication

Total Lines 1587
Duplicated Lines 100 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 102
lcom 1
cbo 1
dl 1587
loc 1587
rs 0.8
c 0
b 0
f 0

102 Methods

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

How to fix   Duplicated Code    Complexity   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

Complex Class

 Tip:   Before tackling complexity, make sure that you eliminate any duplication first. This often can reduce the size of classes significantly.

Complex classes like ClaimReview 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 ClaimReview, and based on these observations, apply Extract Interface, too.

1
<?php
2
3
namespace Spatie\SchemaOrg;
4
5
use \Spatie\SchemaOrg\Contracts\ClaimReviewContract;
6
use \Spatie\SchemaOrg\Contracts\CreativeWorkContract;
7
use \Spatie\SchemaOrg\Contracts\ReviewContract;
8
use \Spatie\SchemaOrg\Contracts\ThingContract;
9
10
/**
11
 * A fact-checking review of claims made (or reported) in some creative work
12
 * (referenced via itemReviewed).
13
 *
14
 * @see http://schema.org/ClaimReview
15
 *
16
 */
17 View Code Duplication
class ClaimReview extends BaseType implements ClaimReviewContract, CreativeWorkContract, ReviewContract, ThingContract
0 ignored issues
show
Duplication introduced by
This class seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

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