WebSchemas/Audience old
Overview
This page describes schema.org proposal, containing necessary types and properties to describe Internet content audience.
Vocabulary changes summary
Add type Thing->Intangible->Audience
Add property audience to type CreativeWork
Thing->Intangible->Audience->AgeAudience
Property | Type | Description |
---|---|---|
minAge | Number | Minimal age recommended for viewing content |
maxAge | Number | Maximal age recommended for viewing content |
Thing->Intangible->Audience->GenderAudience
Property | Type | Description |
---|---|---|
gender | Gender? | Recommended gender |
Thing->Intangible->Audience->ParentAudience
Property | Type | Description |
---|---|---|
childMinAge | Number | Minimal age of the child. A negative value means child isn't born yet. |
childMaxAge | Number | Maximal age of the child. |
Add type Thing->Intangible->Audience->Negation with condition property
Add type Thing->Intangible->Audience->Conjunction (alternatively: And) with condition property
Add type Thing->Intangible->Audience->Disjunction (alternatively: Or) with condition property
Add type Thing->Intangible->Audience->ExclusiveDisjuction (alternatively: Xor) with properties condition1 and condition2
Adding recommendations
First, add an abstract type Thing->Intangible->Audience
Add property audience to type CreativeWork
Note that Medical/Health Proposal contains similar issues, these proposals can be merged together.
Every subclass of Audience type must contain some recommendations. A recommendation can be or an enumeration, or a complex type object. I expect necessary types can be added as soon as we need them.
Age recommendations
As you might think, the first goal of recommendations is to protect children from adult content (porn, violence, etc.). But I doubt all the porn sites will gladly markup their content. But they aren't our primary goal, because we don't want negative constraints, we do want positive recommendations. I think we should stimulate publishers to label their target audience explicitly.
Hence, there is an age recommendation:
Thing->Intangible->Audience->AgeAudience
Property | Type | Description |
---|---|---|
minAge | Number | Minimal age recommended for viewing content |
maxAge | Number | Maximal age recommended for viewing content |
This class can be used in many ways:
1) Means: this is a game for children
<!--Game for children-->
<div itemscope itemtype="http://schema.org/CreativeWork">
<span itemprop="audience" itemscope itemtype="http://schema.org/AgeAudience">
<meta itemprop="minAge" content="7"/>
<meta itemprop="maxAge" content="13"/>
</span>
<object>... some flash game ...</object>
</div>
2) Means: this is an adult movie
<!--Porn movie-->
<div itemscope itemtype="http://schema.org/VideoObject">
<span itemprop="audience" itemscope itemtype="http://schema.org/AgeAudience">
<!--Since it has no maxAge, it has no upper age limit-->
<meta itemprop="minAge" content="18"/>
<!--Being optimistic: <meta itemprop="maxAge" content="115"/>-->
</span>
<object>... some video object ...</object>
</div>
Gender recommendations
Second useful targeting property is gender. Currently gender is expressed as Text. I don't know if it was already discussed, but maybe we need also gender enum. Here is the recommendation type:
Thing->Intangible->Audience->GenderAudience
Property | Type | Description |
---|---|---|
gender | Gender? | Recommended gender |
An example:
<!--E-shop for woman-->
<html itemscope itemtype="http://schema.org/WebPage">
<span itemprop="audience" itemscope itemtype="http://schema.org/GenderAudience">
<meta itemprop="gender" content="female"/>
</span>
<body> ... Some lingerie here ... </body>
</html>
Another example:
<div itemscope itemtype="http://schema.org/Article">
<span itemprop="audience" itemscope itemtype="http://schema.org/GenderAudience">
<meta itemprop="gender" content="male"/>
</span>
<h2 itemprop="name">Bodybuilding</h2>
<div itemprop="text">
Use dumbbells, Luke!
</div>
</div>
Recommendations for parents
Third recommendation type I want to propose: content for parents. There is a lot of sites for parents in the Internet, and they are all different depending on child age. So, there can be some recommendation based on child age: Thing->Intangible->Audience->ParentAudience
Property | Type | Description |
---|---|---|
childMinAge | Number | Minimal age of the child. A negative value means child isn't born yet. |
childMaxAge | Number | Maximal age of the child. |
An example can look so:
<div itemscope itemtype="http://schema.org/Article">
<span itemprop="audience" itemscope itemtype="http://schema.org/ParentAudience">
<meta itemprop="childMinAge" content="2"/>
<meta itemprop="childMaxAge" content="5"/>
</span>
<h2 itemprop="name">Teaching your child reading</h2>
<div itemprop="text">
Bored to read books for your children?
</div>
</div>
Another example:
<div itemscope itemtype="http://schema.org/Article">
<span itemprop="audience" itemscope itemtype="http://schema.org/ParentAudience">
<meta itemprop="childMinAge" content="-1"/>
<meta itemprop="childMaxAge" content="0"/>
</span>
<h2 itemprop="name">Childbirth for dummies</h2>
<div itemprop="text">
Five steps to bear a child: ...
</div>
</div>
Audience Boolean logic
Sometimes an audience can be too complex to be described in schema.org type. But it can be expressed by using some Boolean logic constructs over existing types. I suggest to use Decorator pattern over Audience type. These at least three types:
1) Thing->Intangible->Audience->Negation
2) Thing->Intangible->Audience->Conjunction (alternatively: And or LogicalAnd)
3) Thing->Intangible->Audience->Disjunction (alternatively: Or or LogicalOr)
will make the logic complete (i.e. every boolean function can be expressed). Another type:
4) Thing->Intangible->Audience->ExclusiveDisjuction (alternatively: Xor or LogicalXor)
isn't necessary, but maybe someone will find it useful.
Each type must have condition property, which contains other Audience objects.
Complex examples:
<!--Game for girls (i.e. children and females)-->
<div itemscope itemtype="http://schema.org/CreativeWork">
<span itemprop="audience" itemscope itemtype="http://schema.org/Conjunction">
<span itemprop="condition" itemscope itemtype="http://schema.org/AgeAudience">
<meta itemprop="minAge" content="7"/>
<meta itemprop="maxAge" content="13"/>
</span>
<span itemprop="condition" itemscope itemtype="http://schema.org/GenderAudience">
<meta itemprop="gender" content="Female"/>
</span>
</span>
<object>... Some game with pink unicorns ...</object>
</div>
<!--Book for teenagers and their parents-->
<div itemscope itemtype="http://schema.org/Book">
<span itemprop="audience" itemscope itemtype="http://schema.org/Disjunction">
<span itemprop="condition" itemscope itemtype="http://schema.org/AgeAudience">
<meta itemprop="minAge" content="12"/>
<meta itemprop="maxAge" content="16"/>
</span>
<span itemprop="condition" itemscope itemtype="http://schema.org/ParentAudience">
<meta itemprop="childMinAge" content="12"/>
<meta itemprop="childMaxAge" content="16"/>
</span>
</span>
<h2 itemprop="name">Children and parents</h2>
<span itemprop="headline">Three ways to understand each other</span>
</div>
How to Join the Discussion
No way yet
Related
There are some works on adult content markup:
rtalabel.org - alive, but only restrictive model
ICRA - dead, replaced by PICS
PICS - dead, replaced by POWDER
POWDER - seems to be also dead, last update in 2009. Also the additional-xml-file format seems to be unconvenient for our purposes
Also some current schema.org proposals with similar ideas: