- From: Bob MacGregor <macgregor@ISI.EDU>
- Date: Tue, 06 May 2003 14:22:16 -0700
- To: public-webont-comments@w3.org
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