Annotations as PICS Labels

This proposal is based upon the Platform for Internet Content Selection (PICS) Label Syntax and Communication Protocols, Revision 1, DRAFT 12, and the W3C Annotation Working Group Attribute/Value HTML Proposal of 21 Nov 95.

This document defines a format for embedding annotations within PICS labels.

Please see the PICS Label Syntax and Communication Protocols for a description of embedding PICS labels into RFC-822-style headers, methods by which PICS labels may be transmitted, and the format and syntax of PICS labels.

General Format

The general format of a PICS label list is as follows:

         (PICS-1.0
           <service url> [option...] 
           labels [option...] ratings (<category> <value> ...)
                  [option...] ratings (<category> <value> ...)
                  ...
           <service url> [option...] 
           labels [option...] ratings (<category> <value> ...)
                  [option...] ratings (<category> <value> ...)
                  ...
           ...)

The proposed annotation format would expand the PICS label list into the following general format:

         (PICS-1.0
           <service url> [option...] 
           labels [option...] ratings (<category> <value> ...)
                  [option...] ratings (<category> <value> ...)
                  ...
           <service url> [option...] 
           annotation	[option...] ratings (<category> <value> ...)
	                [option...] ratings (<category> <value> ...)
                  ...
           ...)

The syntax of the PICS label list would be expanded in the case of the element "labelword" to include annotation, as follows:

labelword :: 'labels' | 'l' | 'annotations' | 'a'

It is suggested that the PICS-specific element ratings be modified to a more general term, such as notes.

If the category/value pairs after ratings are expanded to include alphanumeric values rather than just numeric values, they can correspond to the attribute/value pairs in the AVHTML proposed syntax. If the annotation is embedded into the label, and if current AVHTML syntax is to be followed exactly, then some set of category/value pairs are mandatory, such as the version and format URLs.

annotations ratings	(AVHTML-Version 1.0 
			Format-Name Annotation-Set 
			Format-Version 1.1 
			Format-URL http://www.w3.org/Formats/annotation_set_1_1.html 
			Attribute1 Value1
			...
			AttributeN ValueN)

Alternatively, a category/value pair could point to a remote annotation:

annotations ratings (Annotation-URL http://www.w3.org/Work/mycomments.html)

Detailed Syntax

The following grammar, in modified BNF, describes the syntax of PICS labels expanded to include annotation. The only elements which differ from the original PICS label syntax are:

If multi-value is a necessary part of the PICS label syntax, an alternative grammar would use:

labels_rating :: transmit-name number | transmit-name '(' multi-value* ')'
annotations_rating :: transmit-name transmit-name | transmit-name number

labellist :: '(' 'PICS-1.0' service-info+ ')'
service-info :: 'error' '(no-ratings' explanation* ')'
              | serviceID service-error | serviceID option* labelword label*
serviceID :: quotedURL
labelword :: 'labels' | 'l' | 'annotations' | 'a'
label :: label-error | single-label | '(' single-label* ')'
single-label :: option* ratingword '(' rating+  ')'
ratingword :: 'ratings' | 'r' | 'notes' | 'n'
quotedURL :: '"' URL '"' as described and extended in
             Rating Services and Rating Systems.
option :: 'at' quoted-ISO-date        
        | 'by' quotedname
        | 'comment' quotedname        
        | 'complete-label' quotedURL | 'full' quotedURL
        | 'extension' '(' mand/opt quotedURL data* ')'
        | 'generic' boolean          | 'gen' boolean 
        | 'for' quotedURL
        | 'MIC-md5' "base64-string"  | 'md5' "base64-string"
        | 'on' quoted-ISO-date        
        | 'signature-PKCS' "base64-string"
        | 'until' quoted-ISO-date    | 'exp' quoted-ISO-date
mand/opt :: 'optional' | 'mandatory'
data :: quoted-ISO-date | quotedURL
        | number | quotedname | '(' data* ')'
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 alternate formats are permitted, and
     the punctuation must be as specified here.
rating :: transmit-name transmit-name | transmit-name number
transmit-name :: [1*n]alphanumpm ['/' transmit-name]
number :: [sign]unsignedint['.' [unsignedint]]
sign :: '+' | '-'
unsignedint :: [1*n][0-9]
quotedname :: ' " ' [1*n]extendedalphanum ' " '
alphanumpm :: 'A' | ... | 'Z' | 'a' | ... | 'z' | '+' | '-'
extendedalphanum :: alphanumpm | '.' | ' ' | ',' | ';' | ':'
                   | '&' | '=' | '?' | '!' | '*' | '~' | '@' | '#'
base64-string :: as defined in RFC-1521.
service-error :: 'error' '(' 'request-denied' explanation* ')'
               | 'error' 'service-unavailable'
label-error :: 'error' '(' request-denied' [quotedURL explanation*] ')'
             | 'error' '(' not-labeled' quotedURL* ')'
explanation :: quotedname
Created 13 Feb 1996 by Karen MacArthur