- From: <Patrick.Stickler@nokia.com>
- Date: Mon, 12 Nov 2001 23:06:29 +0200
- To: phayes@ai.uwf.edu, w3c-rdfcore-wg@w3.org
> ... God help us if we allow a union of decimal and octal. No help needed. All is well... Unions of decimal and octal forms is no big deal. It depends on the lexical grammar defined for the data type, and the mapping from lexical forms to values. E.g. the Scheme programming language has a integer lexical space that is the union of decimal, octal, hexidecimal, and binary forms, all which map to the integer value space. If I defined an RDF class for the Scheme integer data type, I should be able to define literal values using any valid lexical form. Thus, given the knowledge ex:shoeSize rdfs:range xsd:integer . scm:integer rdfs:subClassOf xsd:integer . aaa ex:shoeSize "10" . bbb ex:shoeSize [ rdf:value "#xA"; rdf:type scm:integer ] . ccc ex:shoeSize [ rdf:value "#b1010"; rdf:type scm:integer ] . ddd ex:shoeSize [ rdf:value "ten"; rdf:type xsd:string ] . (Note that rdfs:subClassOf only should be considered to requires compatability of value space, not lexical space) The first three resources aaa, bbb, and ccc all have a ex:shoeSize of ten. Even though they have different lexical forms. In the case of aaa, the data type (and hence lexical form) is determined to be xsd:integer by *descriptive* application of the rdf:range constraint for ex:shoeSize. In the case of ddd, the value type violates the defined range constraint for the ex:shoeSize property as determined by *prescriptive* application of rdf:range (which is only possible if both range and local value are defined), as xsd:string is not an rdfs:subClassOf xsd:integer, and as such, "ten" is not a valid value for the ex:shoeSize property. The value is still defined, of course, and the knowledge exists, but it does not satisfy the defined range constraint. Now, this also demonstrates why it is imperative that literal values either be inseperable from locally defined types, or from the original properties for which they were defined, presuming those properties define type via rdfs:range. Otherwise, one cannot know what lexical space they are members of and how to properly interpret them, even if one may know that they denote values in a particular value space. Hopefully the above example helps to clarify the concepts of descriptive vs. prescriptive application of rdfs:range and the problems with lexical space not necessarily being shared by types which have compatible value spaces. Cheers, Patrick -- Patrick Stickler Phone: +358 50 483 9453 Senior Research Scientist Fax: +358 7180 35409 Nokia Research Center Email: patrick.stickler@nokia.com
Received on Monday, 12 November 2001 16:07:38 UTC