PICS Label Bureau Query Syntax: PUT Extension

We propose the following method as a standard protocol for submitting PICS labels to any label bureau. We make a logical extension to the detailed syntax of the HTTP query for labels separate from documents as defined in PICS Label Distribution Label Syntax and Communication Protocols. Specifically, we propose to extend the material in the Using HTTP to Request Labels With A Document section of PICS Label Distribution Label Syntax and Communication Protocols.

In PICS Label Distribution Label Syntax and Communication Protocols, the detailed label bureau query syntax is as follows:

request :: get | post
get :: 'get' url-fragment '?' [opt] [format]
                              extension* url+ service+
post :: 'post' url-fragment crlf crlf formencodeddata
url-fragment :: the part of the original URL after the host
    name, as specified in HTTP 1.0.
crlf :: carriage return (hex D) followed by line feed (hex A)
opt :: 'opt=' option
option :: 'generic' | 'normal' | 'tree' | 'generic+tree'
format :: [and] 'format=' form
form :: 'minimal' | 'short' | 'full' | 'signed'
extension :: token '=' token-or-quoted-string
     where the token is not one of opt, format,
     u, or s; and token-or-quoted-string follows
     the quoting conventions specified in RFC-1738
token-or-quoted-string :: token | quotedname
token :: alphanumpm+
url :: [and] 'u=' encodedURL 
service :: [and] 's=' encodedURL 
boolean :: 't' | 'f' | 'true' | 'false'
and :: '&' this must be included unless it immediately
     follows the ? in the query.
encodedURL :: a quoted URL. Following RFC-1738, quotation and some
     special characters inside the URL are encoded using "%xx" notation. 
     Alphabetic characters, digits, and the special characters
     $_-.+!*'(), need not be quoted,  but other characters must be. 
     This does imply that the colon (:) must be encoded as %3A
     and slash (/) as %2F.
formencodeddata :: The query as specified for get but encoded into
     MIME type application/x-www-form-encoded as described in
     sections 8.2.1 and 8.2.3 of HTML 2.0.

A sample label bureau query is as follows:

GET /Ratings?opt=generic&
             u="http%3A%2F%2Fwww.questionable.org%2Fimages"&
             s="http%3A%2F%2Fwww.gcf.org%2Fv2.5"
             HTTP/1.0

Note that the PICS Label Distribution Label Syntax and Communication Protocols specification does not allow labels to be submitted to the label bureau. We propose an extension to the existing syntax as follows. Note: green bold elements are proposed extensions to those already defined in PICS Label Distribution Label Syntax and Communication Protocols and RFC 2068.

request :: get | post | put

This is a standard PUT as defined in HTTP 1.1 and this BNF reference is provided here for clarity. Please see the HTTP 1.1 recommendation for a detailed reference. Our proposal places the labellist in the data field of the PUT.

put :: 'put' url-fragment 'HTTP/1.1' crlf crlf labellist
url-fragment :: the part of the original URL after the host
    name, as specified in HTTP 1.1.
crlf :: carriage return (hex D) followed by line feed (hex A)

Here is a sample PUT query on a PICS 1.1 label bureau:

PUT /Labels HTTP/1.0 [CRLF] [CRLF] 
   (PICS-1.1 "http://www.gcf.org/v1.0/"
       labels by "jamieson@w3.org" for "http://web.mit/edu"
         ratings (suds 0.5 density 0 color/hue 1))

Currently, there is no standard way for a label bureau to accept labels from an outside source. Other methods of submitting labels to label bureaus have been proposed, most notably a form-encoded attribute-value pair protocol, but no existing method gives the label bureau access to any label with arbitrary options and extensions.

With this addition to the label bureau query syntax, we give the label bureau the most flexibility in deciding how to handle the incoming data stream: some label bureaus may want to store minimally-indexed raw label data in the interest of speed, while others may want to parse the labellist for more specific PICS applications.

Last Modified 16 January, 1998, Kyle Jamieson jamieson@mit.edu