WPHeader   F
last analyzed

Complexity

Total Complexity 97

Size/Duplication

Total Lines 1513
Duplicated Lines 100 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 97
lcom 1
cbo 1
dl 1513
loc 1513
rs 0.8
c 0
b 0
f 0

97 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 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 WPHeader 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 WPHeader, and based on these observations, apply Extract Interface, too.

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