MusicComposition   F
last analyzed

Complexity

Total Complexity 107

Size/Duplication

Total Lines 1655
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 107
lcom 1
cbo 1
dl 0
loc 1655
rs 0.8
c 0
b 0
f 0

107 Methods

Rating   Name   Duplication   Size   Complexity  
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 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 composer() 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 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 exampleOfWork() 0 4 1
A expires() 0 4 1
A fileFormat() 0 4 1
A firstPerformance() 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 includedComposition() 0 4 1
A iswcCode() 0 4 1
A keywords() 0 4 1
A learningResourceType() 0 4 1
A license() 0 4 1
A locationCreated() 0 4 1
A lyricist() 0 4 1
A lyrics() 0 4 1
A mainEntity() 0 4 1
A mainEntityOfPage() 0 4 1
A material() 0 4 1
A mentions() 0 4 1
A musicArrangement() 0 4 1
A musicCompositionForm() 0 4 1
A musicalKey() 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 recordedAs() 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 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 MusicComposition 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 MusicComposition, and based on these observations, apply Extract Interface, too.

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