W3C home > Mailing lists > Public > www-rdf-interest@w3.org > October 2001

Datatypes for RDF Schema

From: Peter F. Patel-Schneider <pfps@research.bell-labs.com>
Date: Tue, 09 Oct 2001 17:59:46 -0400
To: www-rdf-interest@w3.org
Message-Id: <20011009175946N.pfps@research.bell-labs.com>
			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 range information to be specified in the
   same way that RDF Schema provides range 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" .


3/ The datatype scheme should be as compatible as possible with XML and XML
   Schema.

   From this, I get that the following should be allowed

	<Person rdf:ID="Mary">
	  <streetAddress>05</streetAddress>
	  <age>06</age>
	</Person>

  and it should be possible to determine the ``type'' of 05 and 06 from
  information about ``Person'' or ``streetAddress'' and ``age''.


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) to 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 datatypes and incorporate their
   meaning into the meaning of (an extension 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

For a slightly different way, and one directly aimed at RDF and RDF Schema
see my alternative model theory for RDF and RDF Schema soon to be posted on
www-rdf-interest. 


What sort of URIs and value spaces could be used?  Just about any kind.
Built-in 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


Consider an n3 example using built-in XML Schema datatypes
as the 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:

<rdf:RDF>

....

<rdf:Property rdf:ID="streetAddress">
  <rdfs:range rdf:resource="xsd:string" />
</rdf:Property>

<Person rdf:ID="John">
  <age>5</age>
  <streetAddress>05</streetAddress>
</Person>

<Person rdf:ID="Mary">
  <streetAddress>5</streetAddress>
</Person>

<Person rdf:about="John">
  <age>05</age>
</Person>

....

<rdf:Property rdf:ID="age">
  <rdfs:range rdf:resource="xsd:integer" />
</rdf:Property>

</rdf:RDF>
Received on Tuesday, 9 October 2001 18:00:02 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:51:52 GMT