Adding Datatypes to RDF Schema Peter F. Patel-Schneider Here is a method for adding datatypes to RDF Schema that fits well with what I see as the RDF Schema philosophy. INTRODUCTION First some desiderata: 1/ The datatype scheme should be backward compatible with RDF and RDF Schema as they are currently constituted. From this, I get that the following n-triples should still be allowed: John age "5" . John streetAddress "12a" . Mary streetAddress "5" . 2/ The datatype scheme should allow type information to be specified in the same way that RDF Schema provides ``type'' information for resources. From this, I get that the following is a (or, perhaps, the) way to specify the type of a literal: Mary age "07" . age rdfs:range ????:integer . John age "05" . Second some political comments: 1/ I am doing this now, as opposed to later, because the RDF Core WG may end up precluding this sort of extension to RDF Schema. 2/ I am doing this now, as opposed to earlier, because DAML+OIL has a similar scheme for datatypes and I thought that the existence of the DAML+OIL solution would serve to prevent this sort of scheme from being precluded by RDF. THE PROPOSAL The basic idea of the proposal is quite simple. 1/ Given a collection of datatypes, each consisting of a value space and a mapping from literals (lexical representations) into their value space make the set of literal values contain the disjoint union of the collection of these value spaces. 2/ Use special URIs to refer to these value spaces and incorporate their meaning into the meaning of RDF Schema. 3/ Allow untyped literals to denote any element of this value space for which they are lexical representations. 4/ When available, range information for properties is used to determine which of the possible literal values is denoted by a particular use of a literal. For technical details on one way to do something very close to this, see the model theory for DAML+OIL at http://www.daml.org/2001/03/model-theoretic-semantics.html What sort of URIs and value spaces could be used? Just about any kind. Primitive XML Schema datatypes would work and will be used in the following examples. The mechanism can be extended to all XML Schema datatypes and with some extensions probably even to all of XML Schema. EXAMPLES AND COMMENTARY A n-triple example using XML Schema datatypes: John age "5" . All that is known so far is that John's age is some data value that can be lexically represented as 5. John streetAddress "05" . Mary streetAddress "5" . It is not know yet whether John's age is the same data value as Mary's street address. Also John and Mary could turn out to have the same streetAddress. John age "05" . It is not known yet whether John has two ages. age rdfs:range xsd:integer . Now we know that the two statements about John's age denote the same information. streetAddress rdfs:range xsd:string . Now we know that John's street address is different from Mary's street address. An RDF/XML version of more-or-less the above example, using qnames as abbreviations for purposes of readability: .... 5 05 5 05 ....