OWL datatyping and example

This messages cites the discussion of datatypes in the RDF Core WG
last call candidate working drafts, and gives an example of their
possible use in OWL.

The normative description of RDF datatypes is at [1] (not quoted

rdfs:Datatype is the class of datatypes. All instances of rdfs:Datatype
correspond to the RDF model of a datatype described in the RDF Concepts
specification [RDF-CONCEPTS]. rdfs:Datatype is both an instance of and
a subclass of rdfs:Class. Each instance of rdfs:Datatype is a subclass
of rdfs:Literal.
]] [2]

rdfs:Datatype should replace daml:Datatype in OWL.

Since rdfs:Datatype is a subclass of rdfs:Class, its instances can be
used in an rdfs:range statement to indicate the class associated with
a given property (as in DAML+OIL), however

Because the schema describes the range of this property as an xsd:integer,
the value of the property must be a typed literal of that datatype in order
to match the range description (i.e., the range declaration does not "assign"
a datatype to a plain literal)
]] [3]

rdfs:range specifies a global restriction.  Hopefully we haven't done
anything in OWL to break the use of local datatype restrictions in

A toClass element defines the class of all objects for whom the values of
property P all belong to the class expression. In other words, it defines
the class of object x for which it holds that if the pair (x,y) is an
instance of P, then y is an instance of the class-expression or datatype;
]] [4]

My own preferred style is to use local Restrictions exclusively for
both datatype and object properties rather than global rdfs:range

One of my colleagues, Michael Cook, has been marking up the Periodic
Table in DAML+OIL.  Converting one of his instances to OWL with
datatypes yields:

<table:Element rdf:ID="He">
  <table:name rdf:datatype="&xsd;string">helium</table:name>
  <table:symbol rdf:datatype="&xsd;string">He</table:symbol>
  <table:atomicNumber rdf:datatype="&xsd;integer">2</table:atomicNumber>
  <table:atomicWeight rdf:datatype="&xsd;float">4.002602</table:atomicWeight>
  <table:group rdf:resource="#group_18"/>
  <table:period rdf:resource="#period_1"/>
  <table:block rdf:resource="#p-block"/>
  <table:casRegistryID rdf:datatype=&xsd;string">7440-59-7</table:casRegistryID>
  <table:standardState rdf:resource="#gas"/>
  <table:color rdf:datatype="&xsd;string">colorless</table:color>
  <table:classification rdf:resource="#Non-metallic"/>
  <table:description rdf:datatype="&xsd;string"></table:description>
  <table:isolation rdf:datatype="&xsd;string"></table:isolation>

assuming that xsd has been defined as an XML entity for
http://www.w3.org/2001/XMLSchema# (note that this is different than
the http://www.w3.org/2000/10/XMLSchema# namespace used in DAML+OIL).

Note the use of the rdf:datatype attribute above to identify typed
literals [5].  It has been suggested that simple literals (without
rdf:datatype) could be used for the string values, but this precludes
specifying rdfs:range or local restrictions on these properties
(i.e. conveying the datatyping intentions of the ontology writer), so
I don't find that good practice.

Note that RDF provides for use of XML Schema datatypes, but also
allows other type systems to be used:

XML Schema datatypes have a "first among equals" status in RDF. They
are treated no differently than any other datatype, but they are
expected to be the most widely used, and therefore the most likely
to be interoperable among different software. As a result, it is
expected that many RDF processors will be programmed to recognize
these datatypes. However, RDF software could be programmed to process
other sets of datatypes as well.
]] [5]

DAML+OIL supported only XML Schema datatypes.

Several additional notes:

RDF provides no mechanism for defining new datatypes. XML Schema Datatypes
[XML-SCHEMA2] provides an extensibility framework suitable for defining new
datatypes for use in RDF.
]] [1]

Certain XML Schema built-in datatypes are not suitable for use within
RDF. For example, the QName datatype requires a namespace declaration
to be in scope during the mapping, and is not recommended for use in RDF.
]] [1]

This semantics for datatypes is minimal. It makes no provision for
associating a datatype with a property so that it applies to all
values of the property, for example, and does not provide any way
of explicitly asserting that a blank node denotes a particular value
under a datatype mapping. We expect that semantic extensions and future
versions of RDF will impose more elaborate datatyping conditions.
Semantic extensions may also refer to other kinds of information about
a datatype, such as orderings of the value space.
]] [6]


[1] http://www.w3.org/2001/sw/RDFCore/TR/WD-rdf-concepts-20030117/#section-Datatypes

[2] http://www.w3.org/2001/sw/RDFCore/TR/WD-rdf-schema-20030117/#ch_datatype

[3] http://www.w3.org/2001/sw/RDFCore/TR/WD-rdf-primer-20030117/#properties

[4] http://www.w3.org/TR/daml+oil-reference#2

[5] http://www.w3.org/2001/sw/RDFCore/TR/WD-rdf-primer-20030117/#typedliterals

[6] http://www.w3.org/2001/sw/RDFCore/TR/WD-rdf-mt-20030117/#dtype_interp

Received on Thursday, 9 January 2003 04:07:21 UTC