Non-global Keys

OWL ought to include a syntax for defining non-global
keys.  For example, suppose the classes Employee and
EmployeeHistory both share the attribute hasSSN.
One would like to be able to assert that 'hasSSN' is
a key for instances of Employee, but not for instances
of EmpoyeeHistory.  InverseFunctionalProperty does not
permit this.

Currently, single valued restrictions on properties
can be stated globally or with respect to instances
of a Class.  Similarly, range restrictions on properties
can be stated globally, or with respect to instances
of a Class.  By analogy, keys should have similar
flexibility.

The property we have in mind for specifying a key
would have domain Class and range Property.  One
might call it something like 'hasKey' or 'classHasKey'.
However, if we are broad-minded, we will recognize
that sooner or later we will also want to support
compound keys.  So perhaps it could be called
'hasSimpleKey' or 'hasAtomicKey'.

When n-ary relational tables are converted into RDF
format, each table maps to a class and each of a table's
columns maps to a property.  If a table has
a compound key (a rather common-place occurrence),
then one would like to be able to map its key
restriction to RDF as well.  That would require
that we support the notion of a compound key.  For
example, the class EmployeeHistory might have the
key <hasSSN, historyDate>.

A property representing a compound key declaration
might map a Class to a List.  Perhaps this property
could be called 'hasCompoundKey'.

Provisions for supporting key declarations appear
in the OWL "wish list".  Given how fundamental they
are in real-world modelling, they ought to become
more than that.

Cheers, Bob

Received on Tuesday, 6 May 2003 20:55:26 UTC