Addendum to OWL Lite Proposal - DisjointWith, oneOf

Hi -

I forgot to mention disjointWith, which is not problematic and can be
supported.
My assumption on oneOf (in the reply to Dan's mail was wrong), it is fully
explained
in the revised document, why I was wrong.

So we have: 22. disjointWith

Here is the delta to the old version to simplify reading :

5.4.4 Construction of classes by enumeration

This is can be problematic,since we cannot disallow using predicates in
rules.
However,we can support the construction of classes via enumeration with the
chosen representation under certain circumstances.

A ”trick “can build on the fact that the enumerated individuals are usually
assigned to the enumerated class via the OWL collection mechanism and not
via
the rdf:type predicate.They become instances of the enumerated class through
the following rule pattern:

C(X) : ?oneOf(c,L) , member(L,X).

Let us assume that individuals can only be assigned this way.Then we can
control the closure of the enumeration via the following rules.

type(X,C) : ?type(X,D) , subClassOf(D,C).
inconsistent(C, L) : ?oneOf(C,L) , type(Y,C).

This disallows that the enumerated class has any nonempty subclasses and
dis-
allows that there is any explicit assignment of individuals to the
enumerated
class.
The latter assumption is too strong.Since this would raise inconsistencies
even if the knowledge base is consistent.For example,the following
declaration
of Boolean would mistakenly trigger an inconsistency:

<Class rdf:ID="Boolean">
 <oneOf owl:parseType="collection">
  <myDoc:Boolean rdf:about="#true"/>
  <myDoc:Boolean rdf:about="#false"/>
 <oneOf>
</Class>

The problem is that the class itself is used in a type statement.This
problem
can be solved via use of negation in rules only.

5.4.5 Disjointness of classes

The pairwise disjointness of two classes can be expressed using the
owl:disjointWith
constructor.It guarantees that there exists no individual that is member of
both
classes.The following rule pattern captures this:

inconsistent(C,D) :? disjointWith (C,D) , type(X,C) , type(X,D).


Sorry for the inconvenience,

attached you find the updated version of the document.

Cheers,

Raphael

___
Raphael Volz, University of Karlsruhe - http://www.uni-karlsruhe.de/WBS/rvo/

Received on Saturday, 5 October 2002 16:48:00 UTC