NoteDigitalDocument   F
last analyzed

Complexity

Total Complexity 98

Size/Duplication

Total Lines 1529
Duplicated Lines 100 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 98
lcom 1
cbo 1
dl 1529
loc 1529
rs 0.8
c 0
b 0
f 0

98 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 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 hasDigitalDocumentPermission() 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 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 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 NoteDigitalDocument 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 NoteDigitalDocument, and based on these observations, apply Extract Interface, too.

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