Archive for July, 2006

OWL and Identity

For a while now, I have been experimenting with building a representation in OWL for the automatic attribution of responsibility. My problem is that the definition of dynamic concepts, i.e. concepts that capture change such as tasks, inferences, workflow, processes, causation, history, stories is next to impossible in OWL-DL. These concepts require some notion of identity in order to be able to describe the differences between occurrences of entities. Furthermore, a basic requirement is the ability to infer the type of some occurrence of a change (e.g. the type of an event).

To exemplify the issue, have a look at a possible definition of a Transition:

class Standstill-to-Moving

Transition and
from some (Physical-Object and (acceleration has zero)) and
to some (Physical-Object and (acceleration has plus))

Although this definition enables a standard OWL description classifier to infer the transition-type of events between simple states (the fillers of the from- and to properties), and to infer whether conjunctions of identified transitions belong to a particular process, more complex (structural or spatial) constraints cannot be expressed in OWL. For example, we could express that transition Standstill-to-Moving can change a property (e.g. acceleration) of some physical object onthe condition that it is connected to some (possibly) other object, and remains connected to some object. But we cannot express that these ob jects should be the same. Even worse, OWL does not allow us to express that the precondition holds for the same ob ject as the post-condition.

In OWL, an individual is a mere placeholder of some property values. In fact, the notion of individual in DL stands for both individual and for instance : the terms are used indiscriminately. Conceptually, individuals have an identity and a life-cycle, while instances are occurrences of individuals at a particular time and a particular place, i.e. situation dependent. OWL Individuals can be said to be the same or different using owl:sameAs and owl:differentFrom constructs respectively. However, these relations operate on a semantic level, and cannot be used to express an identity relation between two different instances of the same individual, i.e. two instances that differ in their property values.

Identity in OWL

At the instance level, multiple ways exist to express identity relations between OWL individuals: 1) introduce a transitive symmetric property such as sameIdentityAs to relate between OWL individuals that share some identity, 2) assert membership of a particular class for each identity, or 3) relate instances to an OWL individual that represents the shared identity. So far so good. However, when the need arises to express classes that range over multiple instances of shared identity, all three solutions are highly problematic. The class definition will be either too generic, or too specific. For instance, maintaining a sameIdentityAs property relation over the pre- and post condition of a transition is not possible: the existence of this relation cannot be used as a condition for classification. The use of a shared ancestor class or OWL individual to maintain identity, as e.g. in the definition of transitions, requires an explicit reference to the identity being maintained: transitions become identity-specific.

Possible followup: the OWL 1.1 proposal does not solve this issue…

OWL 1.1: the next level

The past couple of weeks I have been rather busy writing an article (together with Jochem Liem) about my experiences in using OWL-DL for my PhD research (automatic liability attribution). While doing this I couldn’t help but notice some of the recent developments in the OWL community, and most notably the proposed improvements to OWL:

OWL 1.1 provides extra Description Logic expressive power, moving from the SHOIN Description Logic that underlies OWL DL to the SROIQ Description Logic. The additions are:

qualified cardinality restrictions,
using the same syntactic tokens as regular cardinality restrictions (minCardinality, maxCardinality, and cardinality) but adding a dataRange or a description, as in restriction(friend minCardinality(2 hacker));
local reflexivity restrictions,
on non-complex properties only, allowing constructs like restriction(likes self) for narcissists;
reflexive, irreflexive, symmetric, and anti-symmetric properties,
for non-complex properties only, allowing constructs like ObjectProperty(knows reflexive) and ObjectProperty(husband irreflexive antisymmetric);
disjoint properties,
for non-complex properties only, allowing constructs like DisjointProperties(child spouse); and
property chain inclusion axioms,
allowing constructs like SubPropertyOf(propertyChain(owns part) owns), provided that no cyclic inclusions result.

and

In OWL 1.1 a name (like Person) can be used as any or all of an individual, a class, or a property. The computational problems that would arise if this were treated as in RDF are avoided by ensuring that no aspect of the use of the name as an individual has any effect on the meaning of the name as a class. (This treatment is often called punning.)

With the above change, general properties can be placed on names that are used as classes, and there is additional syntactic sugar to allow the placement of property values in class and property axioms, as in Class(Person partial super(Animal) type(MyClass) value(dc:creator peter)) which is syntactic sugar for Class(Person partial) plus Individual(Person super(Animal) type(MyClass) value(dc:creator peter)). (The above example assumes a definition for dc:creator as an individual-valued property.)

Suffice to say that I am really, REALLY, happy about these improvements! (I now just hope the guys at Mindswap, Manchester, Racer-Systems or the AIFB come up with elegant implementations soon… )

Recommended reading material:

Nothing

Nothing to see here (yet).

Currently busy migrating some of my old stuff to this Wordpress 2.x blog (hoping that I might actually post something to this website in the future)

I have a lot of catching up to do…

Metalex Styler

MetalexStyler 0.1a is a convenience tool for applying the stylesheets from the Metalex distribution to your Metalex files. There’s more info and a zip to download at the Metalex website.