- From: Francesco Cannistrà <fracan@inwind.it>
- Date: Sat, 2 Aug 2003 14:46:00 +0200
- To: <www-mobile@w3.org>
Dear DI WG, I have reviewed the CC/PP WD and this email contains my comments. The comments do not regard only the changes since the Last Call WD but include considerations about the entire document. I apologize for not having found the time to review accurately the LC WD before. Most of my remarks are editorial ones. However, there are even some points that focus on very important issues and that require a rigorous resolution (points 5, 8 and 14). I'd like to receive a clear response about these points. See my comments in the remainder of this email. Regards, Francesco ----------- 0. General editorial remark. I have not been able to find any reference to a key term like "delivery context" throughout the entire document. I don't think this is a good thing. 1. Section 1.1 Scope and normative elements (the last period before the trailing note) [[... (new CC/PP attributes sub-properties of ccpp:Attribute, new client components based on ccpp:Component, etc.).]] - It is not correct to say that attributes are "sub-properties of ccpp:Attribute". ccpp:Attribute is not a property but is a class (it is an instance of rdfs:Class, not of rdf:Property). Furthermore, "sub-properties of" seems to refer to the rdfs:subPropertyOf property. - "new client components based on ccpp:Component" could be a bit confusing since a vocabulary does not define "client components" but defines component classes (i.e. component types): it's a profile that defines the client components by instancing proper component classes defined by a vocabulary. 2. Section 2.2 Extensibility and namespaces [[There is a reasonable expectation that a designated (globally unique) namespace will have associated semantics, including schema-related semantics. Thus, there is a convention that a namespace URI is associated with a corresponding schema document, though the specific mechanism for determining such an association is not formally defined. (The RDF Schema specification does say that the namespace identifier is also used as a schema identifier.)]] I think this paragraph is a bit confusing and is not correct at all. On the one hand it is true that "the specific mechanism for determining such an association is not formally defined". On the other hand it is false that "the RDF Schema specification does say that the namespace identifier is also used as a schema identifier". I let you note that every element defined within a schema is unambiguously identified by an identifier (an URIref) and the schema namespace is part of this identifier. One of the main features of a schema is that it defines a vocabulary in the sense that it provides a naming space for the vocabulary elements (properties and classes) and then permits to leverage these elements in other contexts through the referencing of their names, being provided that the use of these names is unambiguously associated with the naming space of the vocabulary they belong to. This association is made through the schema namespace URI: the schema namespace does identify the vocabulary naming space and, therefore, identifies (at least logically) the schema itself too. This goes beyond the fact that an actual document that defines the schema has effectively been written or the fact that such a document can (or cannot) be retrieved from the Internet through the schema namespace URI. 3. Section 3.1 Components [[A ccpp:Component resource MAY have an rdf:type property (or equivalent RDF structure) indicating what kind of client component it describes]] What does this mean? I think that with "a ccpp:Component resource" you wanted to refer to a profile component. If so, I let you note that being of type ccpp:Component does not make of an RDF resource a profile component. A profile component is the object of a ccpp:component property asserted for a RDF resource representing a profile. Furthermore, note that if an RDF engine knows that a resource is a "ccpp:Component resource" this means that the engine has already read some assertion about the type of the resource. I suggest to change this period as follows: [[The object of a ccpp:component property MUST be a CC/PP component, i.e. a resource whose type is ccpp:Component or one of the sub-types of this class that have been properly defined by a specific attributes vocabulary. Such a resource MAY have an rdf:type property (or equivalent RDF structure) in order for indicating explicitly what kind of client component it describes.]] 4. Section 3.1 Components [[However, CC/PP processors MUST be able to handle profiles that do not contain component type indicators. As long as the CC/PP attributes used are all specific to a given component type, a processor will have sufficient information to interpret them properly.]] This is not sufficiently expressive. I think it should be stated explicitly that, in cases where the component type is not indicated, the attributes of a component MUST all belong to the same component type and that the profile component itself will be assumed to be of this type. Consider the following example: ... <ccpp:component> <rdf:Description rdf:about="MyComponent"> <voc:screenSize>160x160</voc:screenSize> <voc:javaCapable>Yes</voc:javaCapable> </rdf:Description> </ccpp:component> ... If the attributes "screenSize" and "javaCapable" were defined as belonging to different component types (say the "HardwarePlatform" and the "SoftwarePlatform" classes) would this profile be valid? I think it wouldn't be. However, in the sentences above this does not appear sufficiently clear. Therefore, I suggest the following changes: [[However, CC/PP processors MUST be able to handle profiles that do not contain component type indicators. As long as the CC/PP attributes used are all specific to a given component type, a processor will have sufficient information to interpret them properly. It is intended that all the attributes contained in such a component MUST all be specific to the same component type and, therefore, the profile component itself will be implicitly assumed to be of this type. ]] 5. Section 3.1 Components [[If a CC/PP profile uses any attribute that can appear on different component types, then the type of any component on which such an attribute appears MUST be indicated by an rdf:type property, or equivalent RDF. A CC/PP processor MUST be able to use this type information to disambiguate application of any attribute used.]] This is unnecessary and, I think, even contradictory. In order to see why it is unnecessary consider the following examples: 1) <ccpp:component> <rdf:Description rdf:about="MyComponent"> <ccpp-client:color>binary</ccpp-client:color> <voc:screenSize>160x160</voc:screenSize> </rdf:Description> </ccpp:component> 2) <ccpp:component> <rdf:Description rdf:about="MyComponent"> <rdf:type rdf:resource="&ccpp-ns;Component"/> <ccpp-client:color>binary</ccpp-client:color> </rdf:Description> </ccpp:component> 3) <ccpp:component> <rdf:Description rdf:about="MyComponent"> <ccpp-client:color>binary</ccpp-client:color> </rdf:Description> </ccpp:component> Here the ccpp-client:color attribute is taken from the CC/PP client vocabulary for print and dislay and it can belong to components of whatever type (i.e. it has domain on ccpp:Component and, therefore, since all components are of this basic type, it could be asserted for every profile component). In profile 1) the lack of the component type indication does not create problems since the component contains even the voc:screenSize attribute that is specific to a certain component type (say the voc:HardwarePlatform type) and, therefore, this latter component class is to be assumed as the type of the profile component. Profile 2) could be suitable for a printer whose capabilities are expressed by relying on the CC/PP client vocabulary only. Note that the indication of the component type does not provide any further information and that the profile 3) would be equivalent as well. In fact, when parsing profile 3), a processor would find a component having only an attribute that can belong to components of type ccpp:Component. Therefore, since the component type is not explicitly indicated and since the component does not contain other attributes, the processor would automatically deduce that the type of the component is ccpp:Component. The reasons for which I think that the above paragraph is contradictory are a bit deeper and regard the CC/PP structure itself. The contradiction ensues from the fact that potentially all the CC/PP attributes could be suitable for assertions about components of different types. In fact, the CC/PP does not actually impede that a component class defined by a certain vocabulary could be subclassed within another vocabulary. In point of facts, I neither see any good reason for which the CC/PP should impose such a limitation. Consider, for instance, a vocabulary that properly defines a general component class like the voc:NetworkComponent class (subclass of ccpp:Component) and either defines general attributes that are applicable to components of this type like the voc:maxLatency attribute. It is possible that another vocabulary defines two more specific component types like the ext-voc:GSMComponent and ext-voc:UMTSComponent classes by subclassing the voc:NetworkComponent class. Both ext-voc:GSMComponent and ext-voc:UMTSComponent would now be valid CC/PP component classes since the rdfs:subClassOf property is transitive. As a consequence, the voc:maxLatency attribute could be asserted for components of different types, i.e. for components of type voc:NetworkComponent, of type ext-voc:GSMComponent and of type ext-voc:UMTSComponent. Even if I agree that in most cases this would not be a good practice, I can imagine practical application contexts where the leveraging of the this possibility could be useful and could provide major advantages (here I mentioned component classes describing network features only because they appeared to me as quite intuitive examples). Furthermore, as I already said, the CC/PP does not actually impede the construction of this kind of hierarchies for the component classes and I think that this is a good thing. In fact, I think that the real value of the CC/PP is its being an RDF application. If the CC/PP specification was filled with lot of constraints that prohibit from leveraging the RDF potentialities then the CC/PP would become no more than a mere XML format. 6. Section 3.3 Defaults (paragraph following figure 3-2a) [[If a component referenced by ccpp:default]] ccpp:defaults instead of ccpp:default 7. Section 3.4 Distinguishing profile structure from attributes [[... to describe all the non-RDF and non-CC/PP properties:]] Maybe a reader misunderstands what "non-RDF properties" are? 8. Section 4.1.1.1 Values described by URIs All this sub-section is, I think, contradictory and I really don't understand what it aims at. Originally the type anyURI was intended as the type for literal values representing URIs. If it was still so, the section would contain errors but its existence would make sense. But now I see that such a RDF type has been deleted from the CC/PP schema and it does not exist anymore. Therefore, this sub-section has become meaningless. On the one hand, the section seems to say that even arbitrary RDF resources can be indicated as values of attributes, i.e. that vocabularies can define attribute properties that have as range a generic RDF class (e.g. the rdfs:Resource class). If the aim of the sub-section is this, I let you note that: - the section is out of scope since it does not describe a CC/PP defined data type; - the section is redundant since it should be already intended that CC/PP does not forbid the use of valid RDF forms for expressing attribute values (note also that this is even stated explicitly in section 4.1.2: "Other complex CC/PP attribute values may be represented by arbitrary RDF resources"); - it is not in the scope of the CC/PP specification to provide the support for interpreting the URIrefs that identify the RDF resources (this should be a basic concern of RDF itself). On the other hand, it seems that the section wants to say something more. Like if it tried to overload the semantics of the RDF/XML constructs for instancing an RDF resource as value of an attribute property. It seems that the sub-section almost says that when the value of an attribute is a resource the really meaningful part of the value is the URI of the resource rather than the resource itself (note that the title of the section is "Values described by URIs"). If the aim was this, it should be clear that the section would cause potentially heavy incongruities with RDF and would introduce serious limitations to the CC/PP itself since, in point of facts, it would impede the use of arbitrary RDF resources as attribute values. In all cases, I let you note that this section is a sub-section of the section 4.1.1 ("Simple CC/PP attribute data"), which should describe the data types for simple attribute values, where it's intended that "all simple CC/PP attribute values are represented as RDF plain literal values". An RDF resource is not a "RDF plain literal". Maybe it's I that have not succeeded in understanding the contents of this sub-section (?). BTW, I feel to suggest that the ccpp:anyURI type is reintroduced and that the section is properly corrected in order to describe this type. If this was not possible I think that sub-section 4.1.1.1 should be completely removed. 9. Section 5.1 CC/PP Document Conformance What is a CC/PP document, a profile or a vocabulary schema? It seems clear that this section assumes that CC/PP documents are the profiles. Well, do conformance criteria for CC/PP vocabularies exist? 10. Section 5.1 CC/PP Document Conformance (conformance criterium 1) [[The document MUST be valid RDFserialized in XML, and be based on a vocabulary conforming to the RDF Schema in Appendix B.]] What is the meaning of "based on a vocabulary conforming to the RDF Schema in Appendix B"? Unless you wanted to say that a profile can reference only one attributes vocabulary "conforming to the RDF Schema in Appendix B" (but I do not think you did), I believe that it would be far more correct and understandable to say that a document MUST be "based on the vocabulary defined by the RDF Schema in Appendix B" 11. Section 5.1 CC/PP Document Conformance (conformance criterium 5) [[The component names MAY be in rdf:type statements.]] I do not understand: where in the statement, in the subject or in the object? I do not think you wanted to say in the object since component names are names of RDF resources that instance a component class and the object of an rdf:type statement is here a component class (not a component). Therefore, I deduce you intended the subject of a type statement. If so, I let you note that such a subject is not the subject of a rdf:type statement only, but it is also the subject of all the statements indicating the attributes of the component (and there must be at least one of these statements). 12. Section 5.1 CC/PP Document Conformance (conformance criterium 6) [[Components MUST be associated with the CC/PP namespace or some subclass thereof]] What is a subclass of a namespace? 13. Section 5.1 CC/PP Document Conformance (conformance criterium 11) [[Defaults MUST be associated with the CC/PP namespace or some subclass thereof]] Same as the previous point. 14. Compatibility with UAProf All the sentences concerning the compatibility with UAProf are, in my opinion, not correct and contradictory. The major feature of CC/PP is that it is an RDF application. Therefore, all the sentences that state that an UAProf namespace can be used on behalf of the CC/PP namespace have not real value since they do not indicate any rigorous reason for such a logical equivalence at RDF level. Note that all these sentences are even contradictory since, as you explicitly (and correctly !) state multiple times throughout the document, any new attribute vocabularies defined MUST be based on RDF classes and properties defined by the RDF schema in appendix B. It sounds like an alchemy to me to read that "for compatibility with UAProf, the namespace used to qualify xxx MAY be a UAProf namespace". It seems like a kind of magic that tries to make the reader overlook the formal problems that impede the RDF compatibility between CC/PP and UAProf. In point of facts, CC/PP and UAProf are parallel, i.e., equivalent but not compatible RDF applications. UAProf won't be formally compatible with the CC/PP till it won't rely on the CC/PP structural vocabulary to refer to the semantics of the CC/PP structure. However, even with the state of the art, it is possible to achieve RDF semantic convergence between CC/PP and UAProf by relying on higher level ontology languages. I let you note that this possibility is explicitly mentioned as a possible use case of the Web Ontoligy Language (OWL), see [1] (section 2.6, "Ubiquitous computing"). Here I won't say more about possible approaches, if interested you can read the outcomes of the approach I followed in the SADiC API I created [2][3]. In conclusion, since I don't believe that the DI WG wants to base the CC/PP on any ontology language, I think that the CC/PP specification should treat the compatibility with UAProf as an implementation issue. It would be far better for the CC/PP to explicitly admit that there are formal problems that impede rigorous RDF compatibility with UAProf rather than to ignore or overlook these problems. Therefore, I suggest that the CC/PP specification is provided with an apposite section that: - explains the reasons for which the CC/PP and UAProf are not rigorously compatible at RDF level, - affirms the need for converging the two frameworks and - explicitly permits and encourages implementers to overcome suitably this incompatibility within their processor implementations while waiting for a rigorous and general solution to come with the future specifications. [1] http://www.w3.org/TR/2003/WD-webont-req-20030203/ [2] http://www.the-web-middle-earth.com/sadic/ [3] http://www.the-web-middle-earth.com/sadic/sadicSemantics.html
Received on Saturday, 2 August 2003 08:46:43 UTC