- From: Kazuhiro Kitagawa <kaz@w3.org>
- Date: Thu, 30 Aug 2001 14:43:23 +0900
- To: www-mobile@w3.org
Folks, We have identified a set of problems and open issues with UAPROF and in particular with its transport mechanism. We believe these issues must be addressed as soon as possible to make UAPROF (and in general CCPP-based) implementations feasible in the near future. As the identified points should concern both UAPROF and CCPP this mail is sent to the mailing lists of both standardization bodies. Kind regards, Andreas Schade IBM Research Division Zurich Research Laboratory CH-8803 Rueschlikon SWITZERLAND Issues with specification of "User Agent Profile Transport" =========================================================== This document summarizes open issues and ambiguities related to the UAPROF transport mechanism is its present form. Its purpose is to create broader awareness of these problems in order to turn UAPROF and related documents into a set of sound specifications that can actually serve as a standard. The issues identified in this document are divided into three groups and relate to the transport mechanism in general, to the W-HTTP specification, and to profile matching. The syntactic and semantic ambiguities allowed by XML namespaces, RDF syntax, and CC-PP semantics should be eliminated by the UAProf specification by restricting respectively narrowing the usage of these underlying mechanisms. The below comments apply to the UAProf document WAP-248 WAG UAProf (May 30, 2001) and the currently known versions of XML, XML Namespaces, RDF model & syntax specification, CC-PP, HTTP Extension Framework, CC-PP exchange protocol based on HTTP Extension Framework. A. Confusion regarding the transport syntax +++++++++++++++++++++++++++++++++++++++++++ (as seen on the www-mobile@w3.org reflector from cafe_babe@hotmail.com) The transport syntax used by the WAP gateway [or HTTP proxy] towards the origin server defines what an enhancing proxy or origin server needs to be able to understand if it wants to exploit UAProf information. The specification remains ambiguous regarding which mechanism is used by the WAP gateway, as illustrated by the following citations: Section 9 introductory paragraphs: "... A WAP gateway MAY use CC/PPex over HTTPex, but it is not recommended. ..." "..., however, when the WAP gateway converts a WSP request into an HTTP request it MUST use the transport specified in section 9.1. ..." (which is W-HTTP) Section 9.2.3.3. Header Translation between CC/PP-WSP and HTTP: "The WAP gateway MUST forward WSP requests as HTTP 1.1 requests [WAE]. In forwarding the request, the gateway MUST forward all CC/PP-WSP headers (defined in Section 9.2.2 and resolved at the gateway according to the rules of Section 9.2.3.2) as CC/PP-HTTP headers (defined in [CCPPEx]) according to these rules: ..." The second citation suggests the use of W-HTTP whereas the third mandates the use of CC/PP-HTTP headers as defined in CCPPEx. When using CCPPEx, respectively HTTPExt it is unclear whether uniquely defined header field names (such as "profile", "profile-diff") are to be used or whether namespaces with header extensions are to be used (i.e. "profile-99", "profile-diff-99"). Although processing software can be engineered to deal with all of the above header identification schemes (i.e. distinct reserved "x-wap-...", HTTPExt with uniquely defined header field names, HTTPExt with header extensions) it appears as an overkill. B. Specification of W-HTTP incomplete +++++++++++++++++++++++++++++++++++++ The specification is incomplete or at least remains obscure regarding both syntactical and semantical details. Section 9.1 introductory paragraph: "... The defined mechanism provides a functional equivalent for the CC/PP exchange protocol [CCPPex] but the definition of the syntax and semantics of the transport remains in this specification. ..." This suggests that the specification of W-HTTP is NOT based on CC/PP exchange protocol specification, but rather is self-contained. This leaves open a number of issues: B.1. Computation of MD5 digest ------------------------------ The XML document containing the profile subset is carried in the field-body of a HTTP/1.1 header field "x-wap-profile-diff: 1; <?xml .../>". This field-body can be "folded" onto multiple lines and HTTP/1.1 proxies such as a caching proxy is free to modify this "folding" regarding the usage of linear-white-space without changing the semantics of the field value. Unless special care is taken, such modifications will break the MD5 digest value. While CCPPex at least mentions the need for a canonical representation of the XML document, the present specification does not address this problem at all. It does remain unclear, how the MD5 digest is to be computed and how linear-white-space is to be treated in this computation. The specification requires a canonical format for XML documents embedded in HTTP headers. This canonical format MUST not be based on a DOM based scheme (such as DOMHASH [RFC2803]) to avoid forcing proxies to process the HTTP header values into DOM data structures. B.2. Syntax and resolution of profile subsets --------------------------------------------- The "x-wap-profile" header can contain a set of URIs and profile diff references. Each URI is supposed to identify a profile fragment that is to be augmented by a set of profile diffs, and the resulting profile information must be constructed by resolving the URI's and applying the modifications specified in the "x-wap-profile-diff" headers to the retrieved profile fragments. Unfortunately, the standard is imprecise in its description of this process and fails to address the following questions: 1. What exactly is the profile document that is obtained when resolving a "x-wap-profile" URI? Is it a profile containing a collection of components or rather a single component of a particular type? (If it is a single component, does it start with the rdf:Description or with a prf:component tag?) We also suggest requiring typing information to be MANDATORY within CC-PP components, generally labelled "prf:component" (Evidently, we also want to require the unique and pervasive usage of XML namespace tags "prf" and "rdf" to identify the CC-PP respectively UAProf namespaces!) Furthermore, the position of the "rdf:type" element within the "prf:component" element should be fixed (i.e. always the first child element). 2. Regardless of what the answer to question 1 is, further problems arise if a component of some type occurs more than once. The standard does not say explicitly if such a situation can occur or not. If so, how does the profile resolution process work? Does it ignore all components of a particular type if a component description of this type has already been processed, or does it collate the property values by applying the resolution policies. The latter seems(!) to be the intended case since the resolution policy is not used at all when actual and default values are of a component are merged. 3. In the case of collating property values specified in multiple component fragments, what is the resulting component id? Can all these component fragments contain default references, and if so, how are they processed? Does the resolution process observe only the first default reference and discard all others, or does it try to collate and merge default property values using the resolution policies? And last but not least, can defaults references be nested, i.e. can a component contain a default URI which refers to a component which in turn contains a default reference? 4. What exactly is the syntax of the XML part in a "profile-diff-desc" contained in the value of an "x-wap-profile-diff" header? This is similar to question 1 for the "x-wap-profile hader". Is it a profile fragment possibly containing multiple components or just a single component fragment? 5. Regardless of question 4, can diff fragments contain default references? If so, how are they applied to profiles? Does the resoultion process (a1) merge actual property values and defaults of the original profile, (b1) merge actual property values and defaults of the diff profile, and (c1) finally merge the results of step (a1) and (b1) observing the resolution policies? Or does it rather (a2) merge the defaults of the original and the defaults of the diff fragment (observing the resolution policies), (b2) merge the actual values of the original and of the diff fragment (observing the resolution policies), and (c2) finally merge the results of step (a2) and (b2)? It is believed that the present specification leaves the implementor too many options leading to non-predictable results. Furthermore, the syntactic ambiguities of RDF as well as the potenial abuse of XML namespaces (which can be redefined within different XML element scopes) makes automated processing of UAProf information overly complex without providing augmented capabilities. B.3. Use of "x-wap-profile-warning" header ------------------------------------------ Imagine a situation where a request passes through some intermediate enhancing proxy prior to reaching the origin server. The origin server supports UAProf and selects or generates the content returned in the response adding the appropriate warning-code (201 or 202) in the "x-wap-profile-warning" header field. The intermediate proxy also supports UAProf and transcodes parts of the content assembled by the origin server, which requires him to set the warning-code to 203. Will the proxy add a second x-wap-profile-warning header? If not, what is the value that the mobile client will see? C. Profile Matching +++++++++++++++++++ Profile matching is one usage of UAProf advocated in the context of WAP Push, where the push initiator can require a certain profile to be satisfied by the target device. Note however that the behaviour of the push-proxy gateway remains underspecified as profile matching is currently not defined, nor is the behaviour of a PPG in case of profile mis-matching addressed. 1. Is the set of allowed values for all properties infinite? For example, is an arbitrary literal a correct value for a property of the type literal)? Or are there some properties with the constraint that a valid value must be an element of a subset of all values matching the property type. For example, can numeric properties have only values of a certain range? Is there a finite set of values for properties of type literal/dimension? 2. Many property values are literals. The specification merely names examples for these literals rather than providing a final enumeration of possible values with attached semantics. Examples: "HardwarePlatform/Keyboard" How should an origin server be able to use such attributes., if one profile describes a keyboard as "101" and the other one describes it as "AT keyboard" and yet another one as "ATKEYBOARD". I.e. the spelling rules for literal values are insufficiently precise for literal value matching (CC-PP, UAProf deficiencies) "SoftwarePlatform/VideoInputEncoder" How about "MPEG-1" versus "MPEG_1" versus "MPEG 1" versus "MPEG1" versus your favorite choice of spelling? The same for "H.261", "MPEG-4", "H.263", etc.? What about punctuation rules, white space handling and case sentitivity? The "culprits" reside in the CC/PP and UAProf specs. The solution appears to be exhaustive enumeration of the various legal literal values or precise lexical rules for literal tokens. The list of examples can easily be extended with the following attributes: BluetoothProfile, CPU, Model, AudioInputEncoder, JavaPlatform, JVMVersion, OSName, OSVendor, RecipientAppAgent, CurrentBearerService, BrowserName. 3. What is the metrics to be used when matching property values of type Dimension (PixelAspectRatio, ScreenSize, ScreenSizeChar)? In summary, we note that the UAProf specification, based on diverse other, often ambiguous, standards does currently not lend itself for efficient and concise implementation. In particular, we have high-lighted issues of transport syntax, profile syntax and resolution, and profile matching. The noticeable hesitation within the WAP Forum regarding actual usage of UAProf leads us to the belief that remedy is required. Mandating UAProf within the m-services framework yields the impression of an ill-thought usage of immature technology. Authors: Binding Carl (cbd@zurich.ibm.com) Hermann Reto (rhe@zurich.ibm.com) Schade Andreas (san@zurich.ibm.com) IBM Research Division Zurich Research Laboratory CH-8803 Rueschlikon SWITZERLAND
Received on Thursday, 30 August 2001 01:44:03 UTC