W3C PICS

DRAFT-PICS-services-970620

Labeling Services and Labeling Systems/Schemas

Version 0.1

W3C Pre-Draft 20-June-97

Editor:
Bob Schloss <schloss@watson.ibm.com>
Coordinators:
Eric Miller <emiller@oclc.org>
Bob Schloss <schloss@watson.ibm.com>
Authors of Previous Versions:
Jim Miller <jmiller@w3.org>
Paul Resnick <presnick@research.att.com>
David Singer
<singer@almaden.ibm.com>


Status of this document

This document is under discussion by members of the next generation PICS labels working group, and will probably be heavily revised over the next few weeks. Comments should be posted to w3c-labels-NG@w3.org.

Note that the working group will be reconstituted as part of the re-organization of metadata standardization within the W3C during the month of July.

A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/pub/WWW/TR/.

Not yet included or resolved:

  1. increment with number true but not integer or isodate
  2. is 'error' a category name in w3.org/PICS/PICS-Schema ?
  3. include-labeled-values-for-category-from-super true and category-default-value-from-super true and include-subcategories-from-super true
  4. How category-value-default when used in a label affects DSIG
  5. Introductory text in the Inheriting section
  6. Text explaining why imbedded labels are better than subcategories
  7. Should we change the spelling of "imbed" to "embed"?
  8. Additional text in Appendix D items, what changed since PICS-1.1
  9. The example in XML needs to be checked by an XML expert, and there is no BNF for how the service description looks in XML

Abstract

This document, which has been prepared for the technical subcommittee of PICS (Platform for Internet Content Selection), defines a language for describing labeling services. Software programs will read service descriptions written in this language, in order to interpret content labels and assist end-users in configuring selection software.

Previous versions of this document had the title "Rating Services and Rating Systems".


Table of Contents

Introduction

What is a "labeling service"?

What is a "labeling system"?

What is a "content label"?

The application/pics-service document type

Explanation of Sample Labeling Service

Detailed syntax of application/pics-service

Inheriting from one application/pics-service Description to another

Transmiting more than one application/pics-service Description together

w3.org/PICS/PICS-Schema

Using sample URL

Glossary

References

Acknowledgments

Appendix A: The Ages Labeling Service

Appendix B: RSAC Labeling Service

Appendix C: The SafeSurf~~ Labeling Service

Appendix D: Changes from PICS-1.1


Introduction

This document, which has been prepared for the technical subcommittee of PICS (Platform for Internet Content Selection), defines a language for describing labeling services. Software programs will read service descriptions written in this language, in order to interpret content labels and assist end-users in configuring selection software.

A related document (PICS Label Distribution -- to be made available in late June) specifies the syntax and semantics of content labels and protocol(s) for distributing labels. (These labels are compatible with PICS-NG Metadata Model and Syntax).

The goal of the PICS effort is to enable a marketplace in which many different products and services will be developed, tested, and compared. Hence, the following considerations have had significant impact on this document:

What is a "labeling service"?

A labeling service is an individual, group, organization, or company that provides content labels for information on the Internet. The labels it provides are based on a labeling system (see below). Each labeling service must describe itself using a newly created MIME type, application/pics-service. Selection software that relies on labels from a PICS labeling service can first load the application/pics-service description. This description allows the software to tailor its user interface to reflect the details of a particular labeling service, rather than providing a "one design fits all labeling services" interface.

This specification does not state how the application/pics-service description of a labeling service is initially located. For users of the World Wide Web, we expect that well-known sites will provide lists of labeling services along with their application/pics-service descriptions. It is expected that client programs will cache copies of application/pics-service descriptions, so any incompatible change in a service description should be accomplished by creating an entirely new service URL. Some software will pre-install one or more application/pics-services as individual files with filename ending in .RAT or .rat.

Each labeling service picks a URL as its unique identifier. It is included in all content labels the service produces, to identify their source. We recommend, but do not require, that this identifier include a version number, as shown in all of the examples in this specification, to simplify transitions due to incompatible changes over time. For example, our sample service "http://www.gcf.org/v2.0/" includes "v2.0" as its own version number. To ensure that no other service uses the same identifier, it must be a valid URL. In addition, the URL (when used within a query) serves as a default location for a label bureau that dispenses this service's labels (see PICS Label Distribution).

Since the service identifier is a URL, it can be used to retrieve a document. That document may be in any format, but we recommend that it:

We also recommend that the URL be of scheme "http:", and that if it is, requesting it using "Accept: application/pics-service" returns the application/pics-service described in this document.

What is a "labeling system"?

A labeling system specifies the dimensions used for labeling, the scale of allowable values on each dimension, and a description of the criteria used in assigning values. For example, the MPAA rates movies in the USA based on a single dimension with allowable values G, PG, PG-13, R, and NC-17.

Each labeling system ("schema") is identified by a valid URL. This enables several services to use the same labeling system and refer to it by its identifier. The URL naming a labeling system can be accessed to obtain a human-readable description of the labeling system. The format of that description is not specified.

What is a "content label"?

A content label contains information about a document. As described in PICS Label Distribution, a content label has three parts:

  1. the URL naming the labeling service that produced the label;
  2. a set of PICS-defined (and extensible) attribute-value pairs, which provide information about the label such as the date that the label values were assigned; (these are specified in w3.org/PICS/PICS-Schema)
  3. a set of labeling-system-defined attribute-value pairs, which actually describe the item along various dimensions (also called categories)

The application/pics-service document type

A labeling service is defined by a document of type application/pics-service. The detailed syntax and semantics are presented in the next two sections. Here is an example of such a document, intended only to illustrate the full set of features of a machine description:
((PICS-version 2.0)
 (service-section
  (labeling-service "http://www.gcf.org/v2.0/")
  (icon "icons/gcf.gif")
  (name "The Good Clean Fun Rating System")
  (description "Everything you ever wanted to know about soap,
cleaners, and related products. For demonstration purposes only.")
  (label-bureau "http://www.gcf.org/Ratings")
  (sample-url "http://www.gcf.org/Sample.cgi")
 )
 (schema "http://www.gcf.org/ratings" "http://w3.org/PICS/PICS-Schema")

 (category
  (transmit-as "suds")
  (name "Soapsuds Index")
  (min 0.0)
  (max 1.0))

 (category
  (transmit-as "density")
  (name "suds density")
  (label (name "none") (value 0) (icon "icons/none.gif"))
  (label (name "lots") (value 1) (icon "icons/lots.gif")))

 (category
  (transmit-as "subject")
  (name "document subject")
  (category-default-value 0)
  (multivalue true)
  (unordered true)
  (label (name "soap") (value 0))
  (label (name "water") (value 1))
  (label (name "soapdish") (value 2))
  (label-only))

 (category
  (transmit-as "location")
  (name "location")
  (imbedded-label true))

 (category
  (transmit-as "home-location")
  (name "home location")
  (imbedded-label "http://www.schemas.org/homeloca" "http://www.schemas.org/homelocb"))

 (category
  (transmit-as "date")
  (name "date")
  (isodate true))

 (category
  (transmit-as "title")
  (name "title")
  (string true))

 (category
  (transmit-as "url")
  (name "url")
  (url true))

 (category
  (transmit-as "color")
  (name "picture color")
  (integer)

  (category
    (transmit-as "hue")
    (label (name "blue") (value 0))
    (label (name "red") (value 1))
    (label (name "green") (value 2)))

  (category
    (transmit-as "intensity")
    (min 0)
    (max 255))))

The working group needs to decide if an XML dialect to describe the RAT file would be preferable. Only one RAT file format will be supported (either something like the example above, or something compatible with XML).

Here is the example document using XML:

<XML-PICS>
 <service-section>
  <labeling-service value="http://www.gcf.org/v2.0/"/>
  <icon value="icons/gcf.gif"/>
  <name value="The Good Clean Fun Rating System"/>
  <description>Everything you ever wanted to know about soap,
cleaners, and related products. For demonstration purposes only.</description>
  <label-bureau value="http://www.gcf.org/Ratings"/>
  <sample-url value"http://www.gcf.org/Sample.cgi"/>
 </service-section>
 <schema value="http://www.gcf.org/ratings" super="http://w3.org/PICS/PICS-Schema"/>

 <category>
  <transmit-as value="suds"/>
  <name value="Soapsuds Index"/>
  <min value="0.0"/>
  <max value="1.0"/>
 </category>

 <category>
  <transmit-as value="density"/>
  <name value="suds density"/>
  <label> <name value="none"/> <value value="0"/> <icon value="icons/none.gif"/></label>
  <label> <name value="lots"/> <value value="1"/> <icon value="icons/lots.gif"/></label>
 </category>

 <category>
  <transmit-as value="subject"/>
  <name value="document subject"/>
  <category-default-value value="0"/>
  <multivalue value="true"/>
  <unordered value="true"/>
  <label> <name value="soap"/> <value value="0"/></label>
  <label> <name value="water"/> <value value="1"/></label>
  <label> <name value="soapdish"/> <value value="2"/></label>
  <label-only/>
 </category>

 <category>
  <transmit-as value="location"/>
  <name>location</name>
  <imbedded-label value="true"/>
 </category>

 <category>
  <transmit-as value="home-location"/>
  <name value="home location"/>
  <imbedded-label>
    <schema>http://www.schemas.org/homeloca</s chema>
    <schema>http://www.schemas.org/homelocb</s chema>
  </imbedded-label>
 </category>

 <category>
  <transmit-as value="date"/>
  <name value="date"/>
  <isodate value="true"/>
 </category>

 <category>
  <transmit-as value="title"/>
  <name value="title"/>
  <string value="true"/>
 </category>

 <category>
  <transmit-as "url"/>
  <name value="url"/>
  <url value="true"/>
 </category>

 <category>
  <transmit-as value="color"/>
  <name value="picture color"/>
  <integer/>

  <category>
    <transmit-as value="hue"/>
    <label> <name value="blue"/> <value value="0"/></label>
    <label> <name value="red"/> <value value="1"/></label>
    <label> <name value="green"/> <value value="2"/></label>
  </category>

  <category>
    <transmit-as value="intensity"/>
    <min value="0"/>
    <max value="255"/>
  </category>
 </category>
</XML-PICS>

Here is the example document using XML more concisely:

<XML-PICS>
 <service-section>
  <labeling-service value="http://www.gcf.org/v2.0/"/>
  <icon value="icons/gcf.gif"/>
  <name value="The Good Clean Fun Rating System"/>
  <description>Everything you ever wanted to know about soap,
cleaners, and related products. For demonstration purposes only.</description>
  <label-bureau value="http://www.gcf.org/Ratings"/>
  <sample-url value"http://www.gcf.org/Sample.cgi"/>
 </service-section>
 <schema value="http://www.gcf.org/ratings" super="http://w3.org/PICS/PICS-Schema"/>

 <category transmit-as="suds" name="Soapsuds Index" min="0.0" max="1.0"/>

 <category transmit-as="density" name="suds density">
  <label name="none" value="0" icon="icons/none.gif"/>
  <label name="lots" value="1" icon="icons/lots.gif"/>
 </category>

 <category transmit-as="subject" name="document subject" category-default-value="0"
   multivalue="true" unordered="true" label-only="true">
  <label name="soap" value="0"/>
  <label name="water" value="1"/>
  <label name="soapdish" value="2"/>
 </category>

 <category transmit-as="location" name="location" type="imbedded-label"/>

 <category transmit-as="home-location" name="home location" type="imbedded-label">
  <imbedded-label>
    <schema>http://www.schemas.org/homeloca</s chema>
    <schema>http://www.schemas.org/homelocb</s chema>
  </imbedded-label>
 </category>

 <category transmit-as="date" name="date" type="isodate"/>

 <category transmit-as="title" name="title" type="string"/>

 <category transmit-as="url" name="url" type="url"/>

 <category transmit-as="color" name="picture color" type="integer">

  <category transmit-as="hue">
    <label name="blue" value="0"/>
    <label name="red" value="1"/>
    <label name="green" value="2"/>
  </category>

  <category transmit-as="intensity" min="0" max="255"/>
 </category>
</XML-PICS>

Explanation of Sample Labeling Service

  1. The identifier of the labeling schema used is http://www.gcf.org/ratings. The document available at that URL should be a human-readable description of the categories, scales, and intended criteria for assigning descriptions. It inherits from the schema http://w3.org/PICS/PICS-Schema. Every non-imbedded PICS-2.0 labeling schema should inherit, directly or indirectly, from this schema, since it provides the ability to include "on" "at" "by" "full" "comment" "extension" "until" and "generic" values to specify information about the label itself and the scope of what it applies to.

  2. The identifier of the labeling service is http://www.gcf.org/v2.0/. The labels themselves will have this URL in them to identify the service that created them. The document available at this URL should be a human-readable description of the labeling service. Warning: The labels contain this URL in their attribute *schema, although it is shown here as the value of labeling-service and not the value of schema.

  3. There is an icon associated with the labeling service, and it can be retrieved from "http://www.gcf.org/v2.0/icons/gcf.gif" (formed by interpreting the icon attribute's value relative to the labeling-service identifier).

  4. Sample documents with specific ratings may be retrieved by getting "http://www.gcf.org/Sample.cgi" with the appropriate arguments (see Using sample URL).

  5. There are nine top-level categories in this labeling system. Each category has a short transmission name to be used in labels; some also have longer names that are more easily understood. For example, the first has transmission name "suds" and the longer name "Soapsuds Index." The second has a transmission name of "density" and longer name "suds density,".

  6. The "Soapsuds Index" category is rated on a scale from 0.0 to 1.0, inclusive.

  7. The "suds density" category can have values from negative to positive infinity, but there are two values that have names and icons associated with them. The name "none" is the same as 0, and the name "lots" is the same as 1. Icons associated with those names are found at http://www.gcf.org/ratings/icons/none.gif and http://www.gcf.org/ratings/icons/lots.gif (i.e. they are dereferenced relative to the schema identifier).

  8. The "document subject" category only allows the values 0, 1, and 2 to be used, but a single document can have any combination of these values. Each value has a name (0 is "soap," etc.). So one document might not have any rating on this category, while another is both a "soap" and a "soapdish." The values are unordered, which is a hint to user interface designers to employ check boxes or some other widgets that do not convey ordering of values, rather than a slider or other widget that does convey ordering. If a label omits a value for "document subject", the software may assume that the value was 0 "soap", because of the category-default-value clause.

  9. The "location" category allows any label to appear as its value.

  10. The "home location" category allows any label to appear as its value as long as that label's schema is one of "http://www.schemas.org/homeloca" or "http://www.schemas.org/homelocb".

  11. The "date" category allows any date as its value, using the ISODate representation.

  12. The "title" category allows any string as its value.

  13. The "url" category allows any URL as its value.

  14. The "picture color" category has two sub-categories. Values on the "picture color" dimension itself are restricted to integers, and will be transmitted as a category named "color." The first sub-category is transmitted as "color/hue" and the second as "color/intensity." Notice that color/hue can take on only integer values (because it inherits the integer attribute of its parent, "color," category), but there are three values with names ("blue," "red," and "green."). The category color/intensity can take on any integer value between 0 and 255 (inclusive). Sub-categories should rarely be used; it is preferable to use imbeddedlabel. (We should say why). If they are used, abstract should be specified. The example as writtten permits labels to send values for "color", "color/hue" and "color/intensity". Had abstract true been specified for "picture color", then only "color/hue" and "color/intensity" could appear in labels.

Detailed syntax of application/pics-service

Notes:

  1. Whitespace is ignored except in quoted strings. Multiple contiguous whitespace characters can be treated as though they were a single space character.

  2. Transmit-names and quoted strings are case sensitive. Option names and other tokens in the BNF grammar are case insensitive.

  3. Additional attributes may be added over time, using the extension attribute. To avoid duplication of extension names, each extension is identified by a quoted-URL. The URL can be dereferenced to get a human-readable description of the extension. If the extension is optional then software which does not understand the extension can simply ignore it; if the extension is mandatory then software which does not understand the extension should reject the entire service description. See http://w3.org/PICS/extensions/ to find out what extensions are currently in use.

  4. The only service-option or schema-option that may occur more than once in a single service description is the extension option. Likewise, the only option that may occur more than once as a default or as a category-option is extension. In each case, if the extension option is supplied more than once, the quoted-URLs defining the extensions must be distinct.

  5. This specification requires the use of UTF-7 encoding to allow for the inclusion of non-English description strings. For those rating systems and services that use only the US-ASCII character set in their descriptive strings, UTF-7 allows direct encoding of the following (printable) characters: a-z, A-Z, 0-9, '(),-./:?!#$%&*;<=>@[]^^_`{|} Notice that "+" is not included in this set, since it is used by the UTF-7 encoding system.

  6. It is guaranteed that this and all future versions of the application/pics-service MIME type will begin with the version information, changing from 2.0 as specified here to other numbers as the specification is revised. Labeling services are encouraged to adopt a similar mechanism and place their own version number in their labeling-service URL. (Notice that the service description uses the notation "(PICS-version 2.0)" while the label itself (see PICS Label Distribution) uses "PICS-2.0". While inelegant, this is intentional.)
 application/pics-service :: labeling-service-description+
 labeling-service-description ::
   '(' version service-section labeling-system
       schema-option* category-list+ ')'
 
 version :: '(' 'PICS-version' '2.0' ')'
 labeling-system :: '(' 'schema' quoted-URL
 superSchema-Quoted-URL ')'
 superSchema-Quoted-URL :: "http://w3.org/PICS/PICS-Schema" |
 quoted-URL | ''
      Note: quoted-URL names a schema, which must itself
 specify
       "http://w3.org/PICS/PICS-Schema"
       as its superSchema, at least transitively.  Omitting
 quoted-URL
       is only permitted for a schema which will always be used as an
 imbedded label.
 service-section :: '(' 'service-section' labeling-service
 service-option* ')' |
                           ''
       Note: A schema which will always be used as an imbedded label
                    omits the service-section.
       Note: Any particular service-option, with the exception of
                    extention, may appear at most once.
 labeling-service :: '(' 'labeling-service' quoted-URL ')'
 service-option :: description | extension
   icondef | label-bureau-url | name |
 sample-url
 schema-option :: default | extension
 category-list ::
   '(' 'category'
       '(' 'transmit-as' transmit-name ')'
       (category-option | scale-option)*
       category-list*
   ')'
 
 defaultable-option :: boolean-option | extension
    | integer | increment | isodate-option
    | labeled
    | max | min | multi | number |
 unordered
    | url-option
 category-option ::  abstract | category-default-value
                            description | icondef |
 name | imbeddedlabel-option |
                            string-option
 scale-option :: defaultable-option | enum-list
 
 enum-list :: enum+
 enum ::
    '(' 'label' name [description]
        '(' 'value' number ')'
        [icondef]
    ')'
 
 
 default :: '(' 'default' defaultable-option+ ')'
 abstract :: '(' 'abstract' [boolean] ')'
 boolean-option :: '(' 'boolean' [boolean] ')'
 category-default-value :: '(' 'category-default-value' value ')'
 value :: boolean |
                 number | quoted-ISO-date |
 quoted-string |
                 quoted-URL
 description :: '(' 'description' quoted-string ')'
 extension :: '(' 'extension'
                  '(' mand/opt quoted-URL data* ')' ')'
 icondef :: '(' 'icon' quoted-URL ')'
 increment :: '(' 'increment' quoted-ISO-date ')' |
                     '(' 'increment' unsignedint ')' }
 integer :: '(' 'integer' [boolean] ')'
 isodate-option :: '(' 'isodate' [boolean] ')'
 labeled :: '(' 'label-only' [boolean ] ')'
 max :: '(' 'max' maxnum ')'
 min :: '(' 'min' minnum ')'
 multi :: '(' 'multivalue' [boolean] ')'
 name :: '(' 'name' quoted-string ')'
 number :: '(' 'number' [boolean] ')'
 string-option :: '(' 'string' [boolean ')'
 unordered :: '(' 'unordered' [boolean] ')'
 url-option :: '(' 'url' [boolean} ')'
 
 boolean :: 't' | 'f' | 'true' | 'false'
 mand/opt :: 'optional' | 'mandatory'
 transmit-name :: '"' transmit-name-char+ '"'
      Note: Do not use the following as transmit-names:
      "on" "until" "by" "at" "generic" "comment" "full" "extension"
       "true" "false"
 minnum :: number | '-INF'
 maxnum :: number | '+INF'
 number :: [sign]unsignedint['.' [unsignedint]]
 sign :: '+' | '-'
 unsignedint :: [0-9]+
 
 data :: quoted-string | '(' data* ')'
     Note: In many cases it is useful to be able to use a
     URL as data.  This syntax requires that, in such a case,
     the URL must be UTF-7 encoded.  This will rarely require
     any additional work, but designers and implementers of
     extensions should take care.
 quoted-ISO-date :: '"'YYYY'-'MM'-'DD'T'hh':'mmStz'"'
    based on the ISO 8601:1988 date and time standard, restricted
    to the specific form described here:
    YYYY :: four-digit year
    MM :: two-digit month (01=January, etc.)
    DD :: two-digit day of month (01 through 31)
    hh :: two digits of hour (00 through 23) (am/pm NOT allowed)
    mm :: two digits of minute (00 through 59)
    s  :: sign of time zone offset from UTC ('+' or '-')
    tz :: four digit amount of offset from UTC
          (e.g., 1512 means 15 hours and 12 minutes)
    For example, "1994-11-05T08:15-0500" is a valid quoted-ISO-date
    denoting November 5, 1994, 8:15 am, US Eastern Standard Time
    Note: The ISO standard allows considerably greater
    flexibility than that described here.  PICS requires precisely
    the syntax described here -- neither the time nor the time zone may
    be omitted, none of the alternated formats are permitted, and
    the punctuation must be as specified here.
 quoted-string :: '"' UTF-7 '"'
 UTF-7 :: Characters encoded using UTF-7, with direct
    coding of US-ASCII set O except for the double-quote
    (decimal 34) which must be encoded to allow for its use
    as the string delimiter character.  See note above.
 
 quoted-URL ::  '"' URL '"'
 URL is as defined in RFC-1738 for URLs.
 transmit-name-char :: alphanumpm | '.' | '$' | ',' | ';' |
 ':'
                 | '&' | '=' | '?' | '!' | '*' | '~' | '@'
                 | '#' | '_' | '%' hex hex
     Note: Use the "%" escape technique (% followed by the two
           hex digits that represent the character in the ASCII character
           set) to insert single or double quotation marks or parentheses.
 alphanumpm :: 'A' | ... | 'Z' | 'a' | ... | 'z' | '0' | ... | '9' |
 sign
 sign :: '+' | '-'
 imbeddedlabel-option :: '(' 'imbedded-label' 'true' ')' |
                 '(' 'imbedded-label' quoted-URL+ ')'
 label-bureau-url :: '(' 'label-bureau' quoted-URL ')'
 sample-url :: '( 'sample' quoted-URL ')'
 

For reference, the following attributes are currently defined by the above BNF:

  1. Within a labeling service, there are the attributes PICS-version, service-section, and the attributes related to the schema: category, default, extension and schema.
  2. Within the service-section, there are the attributes description, extension, icon, label-bureau labeling-service, and sample-url.
  3. Within a category, there are the attributes boolean, description, extension, icon, integer, label, label-only, abstract, category-default-value, max, min, increment, multivalue, imbedded-label, string, isodate, name, number, transmit-as, unordered and url.
  4. Within a named value (an enum in the BNF syntax), there are the attributes description, icon, name and value.
  5. The defaultable attributes are those which can be overridden by a lexically enclosed description: extension, integer, label-only, max, min, multivalue, unordered. While it isn't actually possible to override an extension, careful design of extensions allows an equivalent facility.

Semantics of the application/pics-service Description

Recall that the MIME type application/pics-service is intended to describe a particular rating service in sufficient detail to automatically generate a user interface for configuring content selection software that relies on the rating service.

The quoted-URL in the labeling-service identifies the service. This identifier is included in all the labels provided by the labeling service. Dereferencing the URL yields a human-readable description of the service. If the optional URL for an icon for the labeling service is supplied, it is dereferenced relative to the rating service URL. The name of the labeling service is intended to be short and human-readable, with the description being a longer description (suitable, perhaps, for a pop-up box). A complete human-readable description is available from the rating service's URL.

The quoted-URL in the schema identifies the labeling system used by this service. Dereferencing the URL yields a human-readable description of the schema. All remaining relative URLs in the application/pics-service description are dereferenced relative to the schema URL, since they describe features of the schema. The first exception is the labeling service's icon, as described above, which is dereferenced relative to the labeling-service URL, so that the service can maintain its own (possibly copyrighted) identity even if it chooses to share a schema with other services. The second exception are the URLs in imbeded-label, which are dereferenced relative to the labeling-service URL. The third exception is the URL in label-bureau, which is dereferenced relative to the labeling-service URL.

The machine-readable description also describes the categories used in the schema. There may be one or more categories for a given schema. A single document may have a value on any or all of these categories. Categories can be nested within one another.

A category has a "transmission name" which is used in the actual label for a document. Transmission names should be as short as reasonable, but they may be complete URLs if desired. They must be unique within a given labeling system (i.e. two categories in the same rating system must not have the same transmission name; but see below for creating transmissions names from nested categories.) Unlike the name and description strings, transmission names are language-independent. That is, if a labeling system is offered in several languages, the transmission names must be the same in all of them. Transmission names are case sensitive (to allow URLs to be used as transmission names). In addition to the transmission name, which is required, a category may optionally have an icon and a human-readable description. The transmit name must not be true or false.

Categories may be nested within one another (as in the case of color in the example labeling system). In this case, the transmission name is created in the usual way by starting with the outermost category's transmit-as string, adding a "/" and proceeding inward in the nesting. Thus, the example labeling system has three categories, and their transmission names are color, color/hue, and color/intensity. In order to simplify the user interface of configuration software, it is wise to have few categories at any level of nesting; we recommend 10 or fewer. It is recommended that using an imbedded label as the value of an attribute is used instead of nesting categories. (We should explain why).

Icons, if provided, may be of any size. We recommend, however, that icons be as small as possible, since selection software is likely to embed them in displays that include other text and images as well. We also recommend that a labeling service's category icons all be the same size.

Values in PICS labels may be integers or fractions with no greater range or precision than that provided by IEEE single-precision floating point numbers. Values in PICS labels may also be strings or booleans. Values may be given names by using the label attribute. When a value is given a name, it may optionally have attached an icon and a human-readable description.

A value given in category-default-value must match the category attribute such as boolean true, number true, integer true, string true, isodate true, url true, min, max. If a category is imbedded-label true then category-default-value must not be specified. Software which has processed the application/pics-service and receives a label in which this category has been omitted will assume it is equivalent to a label in which the category had the value given in category-default-value. (Question from Bob: for dsig, does the label normalization pretend the category name and value were there or not?)

The description for each category can specify restrictions on the range of permissible values for certain named attributes. Values may be restricted in a variety of ways:

  1. number defaults to true if the attribute is omitted and neither isodate true nor string true nor url true nor imbeded-label nor abstract true are specified, or if number is specified with no boolean value;

  2. For a number, minimum (min attribute) defaults to -INF value. For an isodate, minimum defaults to "0000-01-01T00:00-0000" value.

  3. For a number, maximum (max attribute) defaults to +INF) value. For an isodate, maximum defaults to "9999-12-31T23:59-0000" value.

  4. increment is ignored for categories specified boolean true, string true, url true or imbedded-label.
    1. The usage for categories specified isodate true is:
      If not specified, it defaults to "0000-00-00T00:01-0000". If specified, tools that construct profiles may utilize this information in a slider bar or pulldown list. The sign and timezone have no meaning when used with increment, and the MM value may have 00. Typical values are:
      • "0001-00-00T00:00-0000" meaning "one year";
      • "0000-01-00T00:00-0000" meaning "one month";
      • "0000-00-01T00:00-0000" meaning "one day";
      • "0000-00-00T01:00-0000" meaning "one hour";
      • "0000-00-00T00:01-0000" meaning "one minute"
      For a category with isodate true, minimum + increment should be less than maximum. If more than one of min, max, and increment are specified, the time zone specified should be the same in all of them.

      Here is an example:

           (category (transmit-as "date") (name "document date")
              (isodate true) (min "1900-01-01T00:00-0000") (increment
       "0001-00-00T00:00-0000")
              (max "2040-12-31T23:59-0000"))
           
      which means that labels with this attribute will have a value between January 1, 1900 00:00 and December 31, 2040 23:59, and that tools which display a range (where the user can specify: "I only want documents after July of 1979" or "I only want documents before 1990") should have a granularity of one year.

    2. The usage for categories specified integer true is:
      If not specified, it defaults to 1. If specified, it must be an unsigned integer, and minimum + increment should be less than maximum.

    3. The usage for categories specified number true and integer false is: ?????

  5. integer values only (integer attribute, defaults to false if the attribute is omitted, but true if it is present with no value specified); this value is ignored if number attribute is true

  6. named values only (label-only attribute, defaults to false if the attribute is omitted, but true if it is present with no value specified).

  7. more than a single value for an atttribute allowed for a given document (consider the dimension "sizes available"). This is indicated by setting the attribute multivalue to true (default is false if the attribute is omitted, but true if it is present with no value specified).

  8. unordered values (unordered attribute), defaults to false if the attribute is omitted, but true if it is present with no value specified.

  9. string attribute defaults to false. A category must only have one of the following attributes true: boolean, isodate, string, number or url. None of these must be true if imbedded-label is specified.

  10. url attribute defaults to false.

  11. isodate attribute defaults to false.

  12. boolean attribute defaults to false if the the attribute is omitted, but true if it is present with no value specified. A category which is boolean true may only have the following values: true, false.

For schemas that contain large numbers of categories or deeply nested categories, it is convenient to allow for inheritance of some attribute values. In particular, the defaultable-options of a category ( boolean, extension, increment, integer, isodate, label-only, max, min, multivalue, unordered) and url are inherited by each category from its enclosing (parent) category. These attributes can be given default values for the entire labeling service by using the default attributes. This corresponds to value inheritance in object-oriented systems or lexical scoping in programming languages. (Notice that not all attributes can be inherited. Rationale: the set was chosen to include only those attributes that can be overridden. Thus, the enum-list is not inheritable because there is no way to say "don't give this value a name," which would be required to override an inherited name.)

Note: While it would be nice to restrict the numeric values of attributes to integers, the following examples motivate our decision to permit fractional values.

  1. The MPAA rating system was changed to interpolate a new category (PG-13) between "PG" and "R". Had their system been encoded with a tightly packed integer scale (e.g., G=1, PG=2, R=3) it would have required rescinding many existing labels when the change occurred. With fractional numbers there is no need to renumber (e.g., PG-13 could be associated with the fraction 2.5).
  2. It may be desirable to include the cost of an item in a content label. This cost may not be an integral number of currency units (think, for example, of a micropayment system in which charges of small fractions of a cent are permitted).
  3. Values may be generated by statistical means from the responses of many people. Such values could be rounded off to an integer before presentation, but this loses much important information.

Inheriting from one application/pics-service Description to another

(Introductory text gets added here; I hope to get this from Renato, Ora, Eric ...)

Consider:

  ((PICS-Version 2.0)
    (service-section
     (labeling-service "http://www.xyz.org/labels"))
    (schema "http://www.xyz.org/toplevel" "http://w3.org/PICS/PICS-Schema")
    (category
       (transmit-as "a")
       (icon "a.gif")
       (max 100)
     )
    (category
       (transmit-as "b")
       (icon "b.gif")
       (description "this came from toplevel schema") )
  )
  ((PICS-Version 2.0)
    (service-section
     (labeling-service "http://www.xyz.org/detailed-labels"))
    (schema "http://www.xyz.org/midlevel" "http://www.xyz.org/toplevel")
    (category
       (transmit-as "a")
       (icon "aicon.gif")
       (integer true)
       (min 0)
     )
     (category
        (transmit-as "c")
        (icon "cicon.gif")
        (integer true)
      )
  )
 

This is exactly equivalent to:

  ((PICS-Version 2.0)
    (service-section
     (labeling-service "http://www.xyz.org/labels"))
    (schema "http://www.xyz.org/toplevel" "http://w3.org/PICS/PICS-Schema")
    (category
       (transmit-as "a")
       (icon "a.gif")
       (max 100)
     )
    (category
       (transmit-as "b")
       (icon "b.gif")
       (description "this came from toplevel schema") )
  )
 
  ((PICS-Version 2.0)
   (service-section
    (labeling-service "http://www.xyz.org/detailed-labels"))
   (schema "http://www.xyz.org/midlevel" "http://w3.org/PICS/PICS-Schema")
   (category
     (transmit-as "b")
     (icon "http://www.xyz.org/toplevel/b.gif")
     (description "this came from toplevel schema"))
   (category
     (transmit-as "a")
     (icon "aicon.gif")
     (integer true)
     (min 0)
   )
   (category (transmit-as "c") (icon "cicon.gif") (integer true))
 
and in particular, the max value of the category with transmit-as of "a" (in "http://www.xyz.org/detailed-labels") is +INF, because when a subschema declares a category with the same transmit-as string as a superschema, it is as if the superschema had omitted its category with the same transmit-as string.

Transmiting more than one application/pics-service Description together

The URLs appearing in imbedded-label may refer to a labeling-service-description which is transmitted with the labeling-service-description that contained the imbedded-label.

  ((PICS-Version 2.0)
    (service-section
     (labeling-service "http:/www.xyz.org/labels"))
    (schema "http://www.xyz.org/toplevel" "http://w3.org/PICS/PICS-Schema")
    (category
       (transmit-as "a")
       (max 100)
     )
    (category (transmit-as "b") (imbeded-label "http:#b-label-declaration")
 )
  )
  ((PICS-Version 2.0)
    (service-section
     (labeling-service "http://www.xyz.org/labels#b-level-declaration))
    (schema "http://www.xyz.org/toplevel#b-level-schema-declaration")
    (category
       (transmit-as "a")
       (integer true)
       (min 0)
     )
     (category
        (transmit-as "c")
        (integer true)
      )
  )
 

w3.org/PICS/PICS-Schema

This is the schema that all top-level schemas must directly or transitively inherit from.

More detail about how these categories are used will be found in PICS Label Distribution.

 ((PICS-Version 2.0)
   (schema "http://w3.org/PICS/PICS-Schema")
   (category
     (transmit-as "at")
     (isodate true)
     (description "The last modification date of the item to which this
 label
                   applies, at the time the label was assigned")
   )
   (category
      (transmit-as "by")
      (string true)
      (description "An identifier for the person or entity within the
 labeling service
                    who was responsible for creating this particular label")
   )
   (category
      (transmit-as "generic")
      (boolean true)
      (category-default-value false)
      (description "If this category is set to true, the label can be
 applied to any URL
                    starting with the prefix given in the *for option.  This
 is used to
                    label entire sites or any subparts of sites.")
   )
   (category
      (transmit-as "on")
      (isodate true)
      (description "The date on which this label was issued.")
   )
   (category
      (transmit-as "until")
      (isodate true)
      (description "The date on which this label expires.")
   )
   (category
      (transmit-as "comment")
      (string true)
      (description "A comment in the label.")
   )
   (category
      (transmit-as "full")
      (url true)
      (description "In a label supplied by a label bureau, requesting
                    the label for the URL specified here will get
                    a label which includes every known field of the
                    w3.org/PICS/PICS-Schema.")
   )
   (category
      (transmit-as "extension")
      (description "The value must have a left parenthesis, the word
         mandatory or the word optional, a space, a quoted-URL, a space,
         and then zero or more values and end with a right parenthesis.
         More than one extension may occur within the same label if
         the quoted-URLs they contain are distinct.")
   )
   (category
      (transmit-as "error")
                      Question from Bob: is this the way errors
                       returned from label bureaus should be handled,
                       by thinking of "error" as a category name?
   )
 )
 

Using sample URL

For labeling-service's which specify sample-URL, one may get (dereference) this URL with arguments specifying particular values for all but one label-only true category (in the form transmitname=transmitvalue) and the name of the other label-only true category (in the form vary=transmitname), and receive a document which shows n items of content, one for each value of this last category, each of which has a different value of the attribute. If this last category is multivalue true, you receive a document which shows more than n items of content, some items showing various combinations of the multivalues.

Note: Fetching the sample-URL with no arguments, with the same transmit name appearing as the argument of vary and also as the name of another parameter, with less than all non-vary label-only true categories provided, or with invalid values, are all undefined cases. Some services may respond with a Java applet or Frameset which permits examination of samples, others will respond with an error HTTP response code.

Using sample URL with www.gcf.org/v2.0

Since www.gcf.org/v2.0 contains only one label-only true category, the only sample URL that may be fetched is:
http://www.gcf.org/Sample.cgi?vary=subject
which will return a document showing items of content whose labels for "document subject" are:
  1. omitted (if this ever occurs)
  2. soap
  3. water
  4. soapdish
  5. soap and water
  6. soap and soapdish
  7. water and soapdisk
  8. soap, water and soapdish

The argument vary specifies a category transmit name.

Using sample URL with www.rsac.org/ratingsv02.html

Appendix B: RSAC Rating System shows that the URL http://www.rsac.org/ReferenceSamples may be fetched, and that there are four label-only true categories, each of which has 5 possible values.

The sample URLs that may be fetched are:

  1. http://www.rsac.org/ReferenceSamples?vary=v&s=0&n=0&l=0
  2. http://www.rsac.org/ReferenceSamples?vary=v&s=1&n=0&l=0
  3. http://www.rsac.org/ReferenceSamples?vary=v&s=2&n=0&l=0
  4. http://www.rsac.org/ReferenceSamples?vary=v&s=3&n=0&l=0
  5. http://www.rsac.org/ReferenceSamples?vary=v&s=4&n=0&l=0
  6. http://www.rsac.org/ReferenceSamples?vary=v&s=0&n=1&l=0
  7. http://www.rsac.org/ReferenceSamples?vary=v&s=1&n=1&l=0
  8. http://www.rsac.org/ReferenceSamples?vary=v&s=2&n=1&l=0
  9. http://www.rsac.org/ReferenceSamples?vary=v&s=3&n=1&l=0
  10. http://www.rsac.org/ReferenceSamples?vary=v&s=4&n=1&l=0
  11. http://www.rsac.org/ReferenceSamples?vary=v&s=0&n=2&l=0
  12. http://www.rsac.org/ReferenceSamples?vary=v&s=1&n=2&l=0
  13. http://www.rsac.org/ReferenceSamples?vary=v&s=2&n=2&l=0
  14. http://www.rsac.org/ReferenceSamples?vary=v&s=3&n=2&l=0
  15. http://www.rsac.org/ReferenceSamples?vary=v&s=4&n=2&l=0
  16. http://www.rsac.org/ReferenceSamples?vary=v&s=0&n=3&l=0
  17. http://www.rsac.org/ReferenceSamples?vary=v&s=1&n=3&l=0
  18. http://www.rsac.org/ReferenceSamples?vary=v&s=2&n=3&l=0
  19. http://www.rsac.org/ReferenceSamples?vary=v&s=3&n=3&l=0
  20. http://www.rsac.org/ReferenceSamples?vary=v&s=4&n=3&l=0
  21. http://www.rsac.org/ReferenceSamples?vary=v&s=0&n=4&l=0
  22. http://www.rsac.org/ReferenceSamples?vary=v&s=1&n=4&l=0
  23. http://www.rsac.org/ReferenceSamples?vary=v&s=2&n=4&l=0
  24. http://www.rsac.org/ReferenceSamples?vary=v&s=3&n=4&l=0
  25. http://www.rsac.org/ReferenceSamples?vary=v&s=4&n=4&l=0
  26. http://www.rsac.org/ReferenceSamples?vary=v&s=0&n=0&l=1
  27. http://www.rsac.org/ReferenceSamples?vary=v&s=1&n=0&l=1
  28. http://www.rsac.org/ReferenceSamples?vary=v&s=2&n=0&l=1
  29. http://www.rsac.org/ReferenceSamples?vary=v&s=3&n=0&l=1
  30. http://www.rsac.org/ReferenceSamples?vary=v&s=4&n=0&l=1
  31. http://www.rsac.org/ReferenceSamples?vary=v&s=0&n=1&l=1
  32. http://www.rsac.org/ReferenceSamples?vary=v&s=1&n=1&l=1
  33. http://www.rsac.org/ReferenceSamples?vary=v&s=2&n=1&l=1
  34. http://www.rsac.org/ReferenceSamples?vary=v&s=3&n=1&l=1
  35. http://www.rsac.org/ReferenceSamples?vary=v&s=4&n=1&l=1
  36. http://www.rsac.org/ReferenceSamples?vary=v&s=0&n=2&l=1
  37. http://www.rsac.org/ReferenceSamples?vary=v&s=1&n=2&l=1
  38. http://www.rsac.org/ReferenceSamples?vary=v&s=2&n=2&l=1
  39. http://www.rsac.org/ReferenceSamples?vary=v&s=3&n=2&l=1
  40. http://www.rsac.org/ReferenceSamples?vary=v&s=4&n=2&l=1
  41. http://www.rsac.org/ReferenceSamples?vary=v&s=0&n=3&l=1
  42. http://www.rsac.org/ReferenceSamples?vary=v&s=1&n=3&l=1
  43. http://www.rsac.org/ReferenceSamples?vary=v&s=2&n=3&l=1
  44. http://www.rsac.org/ReferenceSamples?vary=v&s=3&n=3&l=1
  45. http://www.rsac.org/ReferenceSamples?vary=v&s=4&n=3&l=1
  46. http://www.rsac.org/ReferenceSamples?vary=v&s=0&n=4&l=1
  47. http://www.rsac.org/ReferenceSamples?vary=v&s=1&n=4&l=1
  48. http://www.rsac.org/ReferenceSamples?vary=v&s=2&n=4&l=1
  49. http://www.rsac.org/ReferenceSamples?vary=v&s=3&n=4&l=1
  50. http://www.rsac.org/ReferenceSamples?vary=v&s=4&n=4&l=1
  51. ...
  52. http://www.rsac.org/ReferenceSamples?vary=v&s=4&n=4&l=4
  53. http://www.rsac.org/ReferenceSamples?vary=s&v=0&n=0&l=0
  54. ...
  55. http://www.rsac.org/ReferenceSamples?vary=s&v=4&n=4&l=4
  56. http://www.rsac.org/ReferenceSamples?vary=n&v=0&s=0&l=0
  57. ...
  58. http://www.rsac.org/ReferenceSamples?vary=n&v=4&s=4&l=4
  59. http://www.rsac.org/ReferenceSamples?vary=l&v=0&s=0&n=0
  60. ...
  61. http://www.rsac.org/ReferenceSamples?vary=l&v=4&s=4&n=4

In each case, what is returned is a document containing 5 samples, one which gets the value 0 for the "vary" category, one which gets the value 1 for the "vary" category ... and one which gets the value 4 for the "vary" category (RSAC labels do not permit omitting a category). Each of these 5 samples has been rated on the other categories in accordance with the values that were specified in the 3 arguments transmit-name=transmit-value.

Using sample URL with categories whose values are imbedded labels

If the schema says that a category value will be an imbedded label of a single particular schema, and that schema has label-only true categories, the notation of transmitname-from-schema/transmitname-from-imbedded-schema is used.

Given:

 ((PICS-version 2.0)
  (service-section
   (sample-url "http://www.labels.com/samp")
   ...
  )
  ...
  (category
    (transmit-as "q")
    (name "quality")
    (label-only true)
    (boolean true)
    (label (name "good") (value true))
    (label (name "bad")  (value false))
  (category
    (transmit-as "t")
    (name "type")
    (imbedded-label "http://www.schemas.org/type01"))
 )
 
and
 ((PICS-version 2.0)
   ...
  (schema "http://www.schemas.org/type01")
  (category
    (transmit-as "g")
    (name "gender")
    (boolean true)
    (label-only true)
    (label (name "male")   (value false))
    (label (name "female") (value true) )
  )
 
then the following sample URLs may be fetched:
  1. http://www.labels.com/samp?vary=q&t/g=true
    returns a document showing a piece of "good" content with gender "female" and a piece of "bad" content with gender "female".
  2. http://www.labels.com/samp?vary=q&t/g=false
    returns a document showing a piece of "good" content with gender "male" and a piece of "bad" content with gender "male"
  3. http://www.labels.com/samp?vary=t/g&q=true
    returns a document showing a piece of "female" content with quality "good" and a piece of "male" content with quality "good"
  4. http://www.labels.com/samp?vary=t/g&q=false
    returns a document showing a piece of "female" content with quality "bad" and a piece of "male" content with quality "bad"

Glossary

application/pics-service
A new MIME data type, defined in this document.
application/pics-labels
A new MIME data type used to transmit one or more labels, defined in PICS Labels.
BNF
Backus-Naur Form (or Backus Normal Form). A notation for describing a formal syntax, used extensively in describing programming languages and computer-readable data formats.
category
The part of a rating system which describes a particular criterion used for rating. For example, a rating system might have three categories named "sexual material," "violence," and "vocabulary." Also called a dimension.
content label
A data structure containing information about a given document's contents. Also called a rating or content rating. The content label may accompany the document it is about or be available separately.
content rating
See content label.
dimension
See category.
HTML
HyperText Markup Language. A means of representing hypertext documents. Based on SGML. See the HTML 2.0 Proposed Standard.
HTTP
HyperText Transfer Protocol. Used for retrieving document contents and/or descriptive header information. See the dr aft HTTP specification.
hypertext
Text, graphics, and other media connected through links.
MIME
Multimedia Internet Message Extension. A technique for sending arbitrary data through electronic mail on the Internet. See RFC-1521
PICS
Platform for Internet Content Selection, the name for both the suite of specification documents of which this is a part, and for the organization writing the documents.
rating
See content label.
label bureau
A computer system which supplies, via a computer network, ratings of documents. It may or may not provide the documents themselves.
label server
See label bureau.
labeling service
An individual or organization that assigns labels according to some labeling system, and then distributes them, perhaps via a label bureau or via CD-ROM.
labeling system
A method for describing information. A labeling system consists of one or more categories and the acceptable types and values each may have.
scale
The range of permissible values for a category.
SGML
Standard Generalized Markup Language. See ISO 8879.
transmission name
(of a category) The short name intended for use over a network to refer to the category. This is distinct from the category name in as much as the transmission name must be language-independent, encoded in ASCII, and as short as reasonably possible. Within a single rating system the transmission names of all categories must be distinct.
URL
Uniform Resource Locator. Described in RFC-1738. A URL describes the location and means of retrieval for a single document. It consists of three components: the "scheme" (protocol used to retrieve a document, like "http" or "ftp"), a host name, and a hierarchical document name within that host. For example "http://w3.org/PICS" is the URL of the PICS home page. The scheme for retrieving it is "http," the host is "w3.org" and the name within that host is "PICS". Notice that PICS defines an additional scheme beyond those listed in RFC-1738, described in Labeling Services and Labeling Systems, which allows Chat (IRC) rooms to be named. (Bob's note: I'm trying to find out what happened to irc: URL scheme by Mandar Mirashi.)
UTF-7
An encoding technique that can be used to transmit Unicode over 7-bit ASCII transport systems such as Internet electronic mail.

References

  1. PICS, "Label Syntax and Communication Protocols", Internet Draft, "draft-pics-labels-00.txt", 11/21/95.
  2. T. Berners-Lee, D. Connolly, "Hypertext Markup Language - 2.0", RFC 1866, 11/03/1995.
  3. N. Borenstein, N. Freed, "MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies", RFC 1521, 09/23/1993.
  4. T. Berners-Lee, L. Masinter, M. McCahill, "Uniform Resource Locators (URLs)", RFC 1738, 12/20/94.
  5. D. Goldsmith, M. Davis, "UTF-7 - A Mail-Safe Transformation Format of Unicode", RFC 1642, 7/13/94.
  6. R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2068, 01/97.
  7. C. Newman, "Date and Time on the Internet", d raft-newman-datetime-01.txt, January 1997.
  8. T. Bray, C. M. Sperberg-McQueen, "Extensible Markup Language (XML): Part I. Syntax", http://www.w3.org/pub/ WWW/TR/WD-xml-lang.html, 03/31/97.

Acknowledgments

Comments and suggestions from the following people are gratefully acknowledged:

 Ora Lassila, Nokia
 Eric Miller, OCLC
 Jim Miller, W3C
 Paul Resnick, AT&T
 Bob Schloss, IBM
 Ralph Swick, W3C
 Misha Wolf, Reuters
 

Comments and suggestions, on previous versions of this specification, from the following people are gratefully acknowledged:

 Brenda Baker, Lucent
 Scott Berkun, Microsoft
 Tim Berners-Lee, W3C
 Roxana Bradescu, AT&T
 Daniel W. Connolly, W3C
 Roy Fielding, W3C
 Jay Friedland, SurfWatch
 Henrik Frystyk Nielsen, W3C
 Wayne Gramlich, Sun
 Woodson Hobbs, NewView
 Rohit Khare, W3C
 Charlie Kim, Apple
 John C. Klensin, MCI
 Tim Krauskopf, Spyglass
 Breen Liblong, IFSI
 Ann McCurdy, Microsoft
 Rich Petke, CompuServe
 Eric Prud'hommeaux, W3C
 Dave Raggett, W3C
 Bob Schloss, IBM
 Ray Soular, SafeSurf
 Jason Thomas, MIT
 G. Winfield Treese, OpenMarket
 Richard Wolpert, Providence Systems
 

Appendix A: The Ages Rating Service

One of the simplest possible rating systems uses a single category, "Minimum recommended age." We present the machine description for a fictional service that uses this labeling system.

 ((PICS-version 2.0)
  (service-section
   (labeling-service "http://www.ages.org/our-service/v2.0/")
   (name "The Ages Rating Service")
   (description "We estimate the maturity required to view materials on
 the Internet."))
  (schema "http://www.ages.org/our-system/"
 "http://w3.org/PICS/PICS-Schema")
  (category (transmit-as "age") (name "Minimum Recommended Age") (integer
 true)))
 

Appendix B: RSAC Rating Service

As a specific example of a deployed rating service encoded using the PICS machine-readable description format, we present the service supplied by the Recreational Software Advisory Council (RSAC). They use their own (copyrighted) rating system, which we include with their permission, updated by us to use PICS-2.0. The rating system contains four categories: Violence, Nudity, Sex, and Language. Each category is rated on a scale from 0 to 4, with a specific description for each value. Only values with names are permitted.

 ((PICS-version 2.0)
  (service-section
   (labeling-service "http://www.rsac.org/")
   (name "The RSAC Ratings Service")
   (description "The Recreational Software Advisory Council rating
 service.  Based on the work of Dr. Donald F. Roberts of Stanford
 University, who has studied the effects of media on children for
 nearly 20 years.")
   (sample-url "http://www.rsac.org/ReferenceSamples")
  )
  (schema "http://www.rsac.org/ratingsv02.html"
 "http://w3.org/PICS/PICS-Schema")
  (default (label-only true))
 
  (category
   (transmit-as "v")
   (name "Violence")
   (label
    (name "Conflict")
    (description "Harmless conflict; some damage to objects")
    (value 0))
   (label
    (name "Fighting")
    (description "Creatures injured or killed; damage to objects;
 fighting")
    (value 1))
   (label
    (name "Killing")
    (description "Humans injured or killed with small amount of blood")
    (value 2))
   (label
    (name "Blood and Gore")
    (description "Humans injured or killed; blood and gore")
    (value 3))
   (label
    (name "Wanton Violence")
    (description "Wanton and gratuitous violence; torture; rape")
    (value 4)))
 
  (category
   (transmit-as "s")
   (name "Sex")
   (label
    (name "None")
    (description "Romance; no sex")
    (value 0))
   (label
    (name "Passionate kissing")
    (description "Passionate kissing")
    (value 1))
   (label
    (name "Clothed sexual touching")
    (description "Clothed sexual touching")
    (value 2))
   (label
    (name "Non-explicit sexual activity")
    (description "Non-explicit sexual activity")
    (value 3))
   (label
    (name "Explicit sexual activity; sex crimes")
    (description
     "Explicit sexual activity; sex crimes")
    (value 4)))
 
  (category
   (transmit-as "n")
   (name "Nudity")
   (label
    (name "None")
    (description "No nudity or revealing attire")
    (value 0))
   (label
    (name "Revealing Attire")
    (description "Revealing attire"
    (value 1))
   (label
    (name "Partial Nudity")
    (description "Partial nudit")
    (value 2))
   (label
    (name "Frontal Nudity")
    (description "Non-sexual frontal nudity")
    (value 3))
   (label
    (name "Explicit")
    (description
     "Provocative frontal nudity")
    (value 4)))
 
  (category
   (transmit-as "l")
   (description "Language")
   (label (name "Slang")
          (description "Inoffensive slang; no profanity")
          (value 0))
   (label (name "Mild Expletives")
          (description "Mild expletives")
          (value 1))
   (label (name "Expletives")
          (description "Expletives; non-sexual anatomical references")
          (value 2))
   (label (name "Obscene Gestures")
          (description "Strong, vulgar language; obscene gestures")
          (value 3))
   (label (name "Explicit")
          (description "Crude or explicit sexual references")
          (value 4))))
 

Appendix C: The SafeSurf~~ Rating Service

SafeSurf, a parents' organization, has established a rating system that is used for self-rating by a large and growing number of sites on the Internet. They have provided a machine-readable version of their service to PICS as a demonstration of a more complex rating system that includes sub-categories as well as a document classification system. The following specification includes a full description of the rating part of the SafeSurf system, with only a small stub to represent the classifications.

 ((PICS-version 2.0)
  (service-section
   (labeling-service "http://www.classify.org/safesurf/service/")
   (name "SafeSurf Rating Service")
   (description "The SafeSurf SS~~ Rating and Classification Standard.
 Designed with input from thousands of parents and Net citizens worldwide to
 specifically to handle the vast potential of the Internet, it empowers each
 family to make informed decisions concerning accessibility of online
 content. Copyright 1995.  All Rights Reserved."))
  (schema "http://www.classify.org/safesurf/"
 "http://w3.org/PICS/PICS-Schema")
 
  (category (transmit-as "SS~~000") (name "Age Range")
    (label
      (name "All Ages")
      (value 1))
    (label
      (name "Older Children")
      (value 2))
    (label
      (name "Younger Teens")
      (value 3))
    (label
      (name "Older Teens")
      (value 4))
    (label
      (name "Adult Supervision Recommended")
      (value 5))
    (label
      (name "Adults")
      (value 6))
    (label
      (name "Limited to Adults")
      (value 7))
    (label
      (name "Adults Only")
      (value 8))
    (label
      (name "Explicitly for Adults")
      (value 9)))
 
  (category (transmit-as "SS~~001") (name "Profanity")
    (label
      (name "Subtle Innuendo")
      (description "Subtly Implied through the use of Slang")
      (value 1))
    (label
      (name "Strong Innuendo")
      (description "Expressly implied through the use of Slang")
      (value 2))
    (label
      (name "Technical Reference")
      (description "Dictionary, encyclopedic, news, technical references")
 (value 3))
    (label
      (name "Non-Graphic-Artistic")
      (description "Limited non-sexual expletives used in a artistic
 fashion") (value 4))
    (label
      (name "Graphic-Artistic")
      (description "Non-sexual expletives used in a artistic fashion")
 (value 5))
    (label
      (name "Graphic")
      (description "Limited use of expletives and obscene gestures") (value
 6))
    (label
      (name "Detailed Graphic")
      (description "Casual use of expletives and obscene gestures") (value
 7))
    (label
      (name "Explicit Vulgarity")
      (description "Heavy use of vulgar language and obscene gestures.
 Unsupervised Chat Rooms.")
      (value 8))
    (label
      (name "Explicit and Crude")
      (description "Saturated with crude sexual references and gestures.
 Unsupervised Chat Rooms.")
      (value 9)))
 
  (category (transmit-as "SS~~002") (name "Heterosexual Themes")
     (label
       (name "Subtle Innuendo")
       (description "Subtly Implied through the use of metaphor")
       (value 1))
     (label
       (name "Strong Innuendo")
       (description "Explicitly implied (not described) through the use of
 metaphor")
       (value 2))
     (label
       (name "Technical Reference")
       (description "Dictionary, encyclopedic, news, medical references")
       (value 3))
     (label
       (name "Non-Graphic-Artistic")
       (description "Limited metaphoric descriptions used in a artistic
 fashion")
       (value 4))
     (label (name "Graphic-Artistic")
       (description "Metaphoric descriptions used in a artistic fashion")
       (value 5))
     (label
       (name "Graphic")
       (description "Descriptions of intimate sexual acts")
       (value 6))
     (label
       (name "Detailed Graphic")
       (description "Descriptions of intimate details of sexual acts")
       (value 7))
     (label
       (name "Explicit Vulgarity")
       (description "Explicit Descriptions of intimate details of sexual
 acts designed to arouse. Inviting interactive sexual participation.
 Unsupervised Sexual Chat Rooms or Newsgroups")
       (value 8))
     (label
       (name "Explicit and Crude")
       (description "Profane Graphic Descriptions of intimate details of
 sexual acts designed to arouse. Inviting interactive sexual participation.
 Unsupervised Sexual Chat Rooms or Newsgroups")
       (value 9)))
 
  (category (transmit-as "SS~~003") (name "Homosexual Themes")
     (label
       (name "Subtle Innuendo")
       (description "Subtly Implied through the use of metaphor")
       (value 1))
     (label
       (name "Strong Innuendo")
       (description "Explicitly implied (not described) through the use of
 metaphor")
       (value 2))
     (label
       (name "Technical Reference")
       (description "Dictionary, encyclopedic, news, medical references")
       (value 3))
     (label
       (name "Non-Graphic-Artistic")
       (description "Limited metaphoric descriptions used in a artistic
 fashion")
       (value 4))
     (label
       (name "Graphic-Artistic")
       (description "Metaphoric descriptions used in a artistic fashion")
       (value 5))
     (label
       (name "Graphic")
       (description "Descriptions of intimate sexual acts")
       (value 6))
     (label
       (name "Detailed Graphic")
       (description "Descriptions of intimate details of sexual acts")
       (value 7))
     (label
       (name "Explicit Vulgarity")
       (description "Explicit Descriptions of intimate details of sexual
 acts designed to arouse. Inviting interactive sexual participation.
 Unsupervised Sexual Chat Rooms or Newsgroups")
       (value 8))
     (label
       (name "Explicit and Crude")
       (description "Profane Graphic Descriptions of intimate details of
 sexual acts designed to arouse. Inviting interactive sexual participation.
 Unsupervised Sexual Chat Rooms or Newsgroups")
       (value 9)))
 
 
  (category (transmit-as "SS~~004") (name "Nudity")
     (label
       (name "Subtle Innuendo")
       (description "Subtly Implied through the use of composition,
 lighting, shaping, revealing clothing, etc.")
       (value 1))
     (label
       (name "Strong Innuendo")
       (description "Explicitly implied (not shown) through the use of
 composition, lighting, shaping or revealing clothing")
       (value 2))
     (label
       (name "Technical Reference")
       (description "Dictionary, encyclopedic, news, medical references")
       (value 3))
     (label
       (name "Non-Graphic-Artistic")
       (description "Classic works of art presented in public museums for
 family viewing")
       (value 4))
     (label
       (name "Graphic-Artistic")
       (description "Artistically presented without full frontal nudity")
       (value 5))
     (label
       (name "Graphic")
       (description "Artistically presented with frontal nudity")
       (value 6))
     (label
      (name "Detailed Graphic")
      (description "Erotic frontal nudity")
       (value 7))
     (label
       (name "Explicit Vulgarity")
       (description "Detailed provocative presentation")
       (value 8))
     (label
       (name "Explicit and Crude")
       (description "Explicit pornographic presentation")
       (value 9)))
 
  (category (transmit-as "SS~~005")
     (name "Violence")
     (label
       (name "Subtle Innuendo")
       (value 1))
     (label
       (name "Strong Innuendo")
       (value 2))
     (label
       (name "Technical Reference")
       (value 3))
     (label
       (name "Non-Graphic-Artistic")
       (value 4))
     (label
       (name "Graphic-Artistic")
       (value 5))
     (label
       (name "Graphic")
       (value 6))
     (label
       (name "Detailed Graphic")
       (value 7))
     (label
       (name "Inviting Participation in Graphic Interactive Format")
       (value 8))
     (label
       (name "Encouraging Personal Participation, Weapon Making")
       (value 9)))
 
  (category (transmit-as "SS~~006")
    (name "Sex Violence and Profanity")
     (label
       (name "Subtle Innuendo")
       (value 1))
     (label
       (name "Strong Innuendo")
       (value 2))
     (label
       (name "Technical Reference")
       (value 3))
     (label
       (name "Non-Graphic-Artistic")
       (value 4))
     (label
       (name "Graphic-Artistic")
       (value 5))
     (label
       (name "Graphic")
       (value 6))
     (label
       (name "Detailed Graphic")
       (value 7))
     (label
       (name "Explicit Vulgarity")
       (value 8))
     (label
       (name "Explicit and Crude")
       (value 9)))
 
  (category (transmit-as "SS~~007")
    (name "Intolerance of another person's racial, religious, or gender
 backround")
     (label
       (name "Subtle Innuendo")
       (value 1))
     (label
       (name "Strong Innuendo")
       (value 2))
     (label
       (name "Technical Reference")
       (value 3))
     (label
       (name "Non-Graphic-Literary")
       (value 4))
     (label
       (name "Graphic-Literary")
       (value 5))
     (label
       (name "Graphic Discussions")
       (value 6))
     (label
       (name "Endorsing Hatred")
       (value 7))
     (label
       (name "Endorsing Violent or Hateful Action")
       (value 8))
     (label
       (name "Advocating Violent or Hateful Action")
       (value 9)))
 
  (category (transmit-as "SS~~008") (name "Glorifying Drug Use")
     (label
       (name "Subtle Innuendo")
       (value 1))
     (label
       (name "Strong Innuendo")
       (value 2))
     (label
       (name "Technical Reference")
       (value 3))
     (label
       (name "Non-Graphic-Artistic")
       (value 4))
     (label
       (name "Graphic-Artistic")
       (value 5))
     (label
       (name "Graphic")
       (value 6))
     (label
       (name "Detailed Graphic")
       (value 7))
     (label
       (name "Simulated Interactive Participation")
       (value 8))
     (label
       (name "Soliciting Personal Participation")
       (value 9)))
 
  (category (transmit-as "SS~~009") (name "Other Adult Themes")
     (label
       (name "Subtle Innuendo")
       (value 1))
     (label
       (name "Strong Innuendo")
       (value 2))
     (label
       (name "Technical Reference")
       (value 3))
     (label
       (name "Non-Graphic-Artistic")
       (value 4))
     (label
       (name "Graphic-Artistic")
       (value 5))
     (label
       (name "Graphic")
       (value 6))
     (label
       (name "Detailed Graphic")
       (value 7))
     (label
       (name "Explicit Vulgarity")
       (value 8))
     (label
       (name "Explicit and Crude")
       (value 9)))
 
  (category (transmit-as "SS~~00A") (name "Gambling")
     (label
       (name "Subtle Innuendo")
       (value 1))
     (label
       (name "Strong Innuendo")
       (value 2))
     (label
       (name "Technical Discussion")
       (value 3))
     (label
       (name "Non-Graphic-Artistic, Advertising")
       (value 4))
     (label
       (name "Graphic-Artistic, Advertising")
       (value 5))
     (label
       (name "Simulated Gambling")
       (value 6))
     (label
       (name "Real Life Gambling without Stakes")
       (value 7))
     (label
       (name "Encouraging Interactive Real Life Participation with Stakes")
       (value 8))
     (label
       (name "Providing Means with Stakes")
       (value 9)))
 
  (category (transmit-as "SS~~100")  (name "General Information")
       (min 1) (max 100) (integer true)))
 

Appendix D: Changes from PICS-1.1

  1. string values
  2. imbedded-label
  3. url values
  4. isodate values
  5. increment
  6. abstract
  7. replacement of rating-system with schema
  8. change from rating-service to labeling-service
  9. label-bureau extension is now part of the spec as label-bureau
  10. transmitting more than one application/pics-service together
  11. superschema
  12. category-default-value
  13. boolean values
  14. recommendation that service URL start with http and that Accept: application/pics-service retrieves it
  15. service-section
  16. schema appears after service-section(labeling-service URL) whereas in PICS-1.1, rating-service appeared after rating-system
  17. sample-url


Webmaster
$Date: 1997/06/20 16:45:16 $