WebSchemas/Audience old

From W3C Wiki


This is an archived WebSchemas proposal Audience proposal for schema.org. See Proposals listing for more. Note: active schema.org development is now based at github



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:

Medical/Health

LRMI