Completed
Push — master ( 5ef641...47b2a6 )
by Sebastian
04:50
created

CreativeWork   F

Complexity

Total Complexity 83

Size/Duplication

Total Lines 1285
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 83
lcom 1
cbo 1
dl 0
loc 1285
rs 0.8
c 0
b 0
f 0

83 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 aggregateRating() 0 4 1
A alternativeHeadline() 0 4 1
A associatedMedia() 0 4 1
A audience() 0 4 1
A audio() 0 4 1
A author() 0 4 1
A award() 0 4 1
A awards() 0 4 1
A character() 0 4 1
A citation() 0 4 1
A comment() 0 4 1
A commentCount() 0 4 1
A 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 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 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 material() 0 4 1
A mentions() 0 4 1
A offers() 0 4 1
A position() 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 review() 0 4 1
A reviews() 0 4 1
A schemaVersion() 0 4 1
A sourceOrganization() 0 4 1
A spatialCoverage() 0 4 1
A sponsor() 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 version() 0 4 1
A video() 0 4 1
A workExample() 0 4 1

How to fix   Complexity   

Complex Class

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

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