Report   F
last analyzed

Complexity

Total Complexity 105

Size/Duplication

Total Lines 1653
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 105
lcom 1
cbo 1
dl 0
loc 1653
rs 0.8
c 0
b 0
f 0

105 Methods

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

How to fix   Complexity   

Complex Class

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

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