Author: Mark H. Butler mark-h_butler@hp.com
Note this document is for informational purposes only. It is not endorsed by the W3C CC/PP Working Group, Open Mobile Alliance / WAP Forum or JSR-188 Expert Group in any way. It reflects the author's experience while implementing DELI, a Java Servlet API that supports CC/PP and UAProf. Where reference is made to particular devices or manufacturers these comments have not been endorsed by the relevant manufacturers in any way, but reflect recent interoperability testing conducted by the author.
This document is being circulated in order to elicit feedback therefore comments, criticisms, suggestions are welcome.
General area of functionality |
Specific area of functionality |
CC/PP compatibility |
UAProf compatibility |
In scope of WD |
Supported by DELI (Hewlett Packard) |
XML Serialisation of RDF |
|
|
|
|
|
|
Is the processor fully RDF compliant? |
Required |
Latest version of UAProf spec forbids some abbreviated syntax. |
Yes |
Yes |
|
XML Serialization of RDF: support
of default namespace |
Required |
Yes |
Yes |
Yes |
|
XML Serialization of RDF: use of
namespace declarations for individual “Description” element |
Required |
Yes |
Yes |
Yes |
|
XML Serialization of RDF –
abbreviated syntax: XML attribute notation of scalar properties |
Required |
Optional |
Yes |
Yes |
|
XML Serialization of RDF –
abbreviated syntax: Nested description elements |
Required |
Yes |
Yes |
Yes |
|
XML Serialization of RDF –
abbreviated syntax: Description element containing type property |
Required |
Yes |
Yes |
Yes |
|
Can the processor cope with UAProf profiles that do not qualify ID, about or resource with a namespace? |
Optional |
Required |
No |
Yes |
CC/PP Profile components |
|
|
|
|
|
|
Processor can retrieve component name from type statement |
Required |
Optional: Some UAProf processors retrieve it from ID, see below |
Yes |
Yes |
|
If profile omits type statement, can the processor infer the component from attribute name via vocabulary information? |
Optional |
Found necessary in implementation |
No |
Yes |
|
If type statement is omitted, can the processor retrieve the component from rdf:ID or rdf:about value. Note: this is incorrect use of RDF as this value is a local name not a QName. |
Optional |
Found necessary in implementation: several UAProf processors seem to work this way by default |
No |
Forthcoming |
|
Can processor process components if they are associated
with any CC/PP namespace? |
Required |
Not required |
Yes |
Yes |
|
Can processor process components if they are associated with any appropriate non-CC/PP namespace (e.g. UAProf) |
Optional |
Required |
No |
Yes |
|
Can processor process profiles that omit components altogether e.g. Trium Eclipse? |
Optional |
Found necessary in implementation |
No |
Yes |
CC/PP Profile Defaults |
|
|
|
|
|
|
Can processor process inline defaults? |
Required |
Required |
Yes |
Yes |
|
Can processor process defaults by reference? |
Required |
Not required |
Yes |
Yes |
|
Can processor process defaults regardless of whether they are written ccpp:defaults or ccpp:Defaults? |
Required |
Not required |
Yes |
Yes |
|
Can processor process defaults if they are associated with any CC/PP namespace? |
Required |
Not required |
Yes |
Yes |
|
Can processor process defaults if they are associated with any appropriate non-CC/PP namespace (e.g. UAProf) |
Optional |
Required |
No |
Yes |
|
When retrieving values from a profile which contains both a default value and a directly applied value, does the directly applied value take precedence? |
Required |
Required |
Yes |
Yes |
CC/PP proxy description |
|
|
|
|
|
|
Processor supports proxyBehavior blocks |
Recommended |
Not required |
Yes |
No |
|
Processor supports applicability conditionals in proxyBehavior blocks |
Recommended |
Not required |
Yes |
No |
|
Processor supports proxyAllow statements in proxyBehavior blocks |
Recommended |
Not required |
Yes |
No |
|
Processor supports proxyBlock statements in proxyBehavior blocks |
Recommended |
Not required |
Yes |
No |
|
When retrieving values that have both a directly applied value and a proxy value via proxyBehavior, does the processor make the proxy value take precedence? |
Recommended |
Not required |
Yes |
No |
Capability Chaining |
|
|
|
|
|
|
Can the processor distinguish between profile, proxy-profile, request-profile, client-profile and next-profile? |
Recommended |
Not required |
Yes |
No |
Extensibility and namespaces |
|
|
|
|
|
|
Can processor distinguish between two CC/PP attributes that have the same name but different namespaces? |
Required |
Not required |
Yes |
Yes |
|
Can the processor deal with profiles that contain multiple namespaces? |
Required |
Not required |
Yes |
Yes |
|
Does the processor distinguish namespaces via URI, not via the namespace prefix? |
Required |
Not required |
Yes |
Yes |
|
Can the processor load schemas "on the fly" i.e. it does not have to be configured for vocabularies in advance? (Note this is not possible for many schemas as the namespace does not necessarily contain a schema definition.) |
Optional |
Optional |
No |
No |
|
Can the processor deal with any vocabulary without adding extra code? |
Optional |
Optional |
No |
Yes, if vocabulary uses UAProf resolution rules. No, if uses other resolution rules. Need to add a class that describes resolution policy in vocabulary, or adopt UAProf resolution policy |
Support for simple attributes |
|
|
|
|
|
|
Can processor deal with attributes that are URIs |
Recommended |
Not required |
Yes |
No |
|
Can processor deal with attributes that are Text values |
Recommended |
Required |
Yes |
Yes |
|
Can processor deal with attributes that are Integer numbers |
Recommended |
Required |
Yes |
Yes |
|
Can processor deal with attributes that are Rational numbers |
Recommended |
Required |
Yes |
Yes |
|
Can processor deal with attributes that are Dimensions |
Optional |
Required |
No |
Yes |
|
Can processor deal with attributes that are Booleans |
Optional |
Required |
No |
Yes |
Support for structured attributes |
|
|
|
|
|
|
Can processor deal with attributes that are set of values (Bags) |
Required |
Required |
Yes |
Yes |
|
Can processor deal with attributes that are sequence of values (Seq) |
Required |
Required |
Yes |
Yes |
Schema processing |
|
|
|
|
|
|
Can processor process a schema definition of a vocabulary? |
Optional |
Optional |
No |
Yes |
|
Can processor extract resolution rule and datatype information from the comments fields of the UAProf schema definition? |
Optional |
Optional |
No |
Yes |
UAProf W-HTTP Protocol |
|
|
|
|
|
|
Does the processor support reference profiles? |
Optional |
Required |
No |
Yes |
|
Does the processor support profile-diffs? |
Optional |
Required |
No |
Yes |
|
Does the processor support profile-diffs in the absence of
reference profiles? (Note that this is improper
usage according to both CCPP and UAProf
specifications.) |
Optional |
Required |
No |
Yes |
|
Does the processor support profile and profile-diff headers as well as x-wap-profile and x-wap-profile-diff headers? |
Optional |
Required for Nokia emulator compatibility |
No |
Yes |
|
Does the processor support profile-diff digests? |
Optional |
Required |
No |
Yes |
|
Does the processor support UAProf resolution rules? |
Optional |
Required |
No |
Yes |
|
Does the processor read UAProf resolution rules from the Schema? |
Optional |
Optional |
No |
Yes |
|
Does the processor support warning headers in HTTP responses? |
Optional |
Required |
No |
Yes |
UAProf HTTP-ex Protocol |
|
|
|
|
|
|
Does the processor support reference profiles? |
Optional |
Required |
No |
Yes |
|
Does the processor support profile-diffs? |
Optional |
Required |
No |
Yes |
|
Does the processor support profile-diffs in the absence of reference profiles? |
Optional |
Required for Ericsson Gateway compatibility |
No |
Yes |
|
Does the processor support reference profiles not enclosed in quotes? |
Optional |
Optional - required for Openwave Gateway compatibility |
No |
Yes |
|
Does the processor support profile-diffs not enclosed in quotes? |
Optional |
Optional - required for Openwave Gateway compatibility |
No |
Yes |
|
Does the processor support profile-diff digests? |
Optional |
Required |
No |
Yes |
|
Does the processor support UAProf resolution rules? |
Optional |
Required |
No |
Yes |
|
Does the processor read UAProf resolution rules from the Schema? |
Optional |
Optional |
No |
Yes |
|
Does the processor support optional methods (GET,POST with an OPT)? |
Optional |
Required |
No |
Yes |
|
Does the processor support mandatory methods (M-GET,M-POST with a MAN)? |
Optional |
Required |
No |
No |
|
Does the processor support numerical namespaces correctly i.e. will cope with any value? |
Optional |
Required |
No |
Yes |
|
Does the processor support warning headers in HTTP responses? |
Optional |
Required |
No |
No |
Profile Information Input
Sources |
|
|
|
|
|
|
Does the processor accept profile
information from other input sources than HTTP requests? |
Optional |
Not required |
No |
|
Caching Profiles |
|
|
|
|
|
|
Does the processor cache reference profiles? |
Optional |
Optional |
No |
Yes |
|
Does the processor cache profile
diffs? |
Optional |
Optional |
No |
|
|
Does the processor cache profiles
per request (result of reference profiles and profile-diffs? |
Optional |
Optional |
No |
|
|
Is the cache lifetime for reference profiles adjustable? |
Optional |
Optional |
No |
Yes |
Profile Matching |
|
|
|
|
|
|
Does the processor provide support for comparing profiles? |
Optional |
Optional |
No |
|
|
Does the processor provide
support for matching profiles with profile groups? |
Optional |
Optional |
No |
Yes: provides capability class support |
Legacy Device Support |
|
|
|
|
|
|
Does the processor support legacy devices by mapping user agent strings on to CC/PP profiles? |
Optional |
Optional |
No |
Yes |
|
Does the processor support legacy devices by copying accept headers from HTTP request into the CC/PP profile? |
Optional |
Optional |
No |
No |
|
Does the processor support legacy devices by extracting additional information from the user agent string e.g. Pocket IE adds screen size here? |
Optional |
Optional |
No |
No |
|
Does the processor support legacy devices by copying Openwave headers into the CC/PP profile? |
Optional |
Optional |
No |
No |
|
Does the processor support legacy devices by copy AvantGo headers into the CC/PP profile? |
Optional |
Optional |
No |
No |
Profile Validation |
|
|
|
|
|
|
Can the processor validate profiles against their schema? |
Optional |
Optional |
No |
|
Schema Support |
|
|
|
|
|
|
Can the processor translate
profiles of a particular schema into a profile of another schema? |
Optional |
Optional |
No |
|
Trust model |
|
|
|
|
|
|
Does the processor support the P3P extensions to CC/PP outlined in the CC/PP implementation guide? |
Optional |
Optional |
No |
No |