Defining properties between classes

Dear All,
I'm trying to solve a modelling problem for an OWL-DL ontology, for which I
still have not found a known solution. As we are looking for proposing this
ontology as a general reference and as it should be used for future
projects, I'm trying to get a clean and semantically sound solution.

I'd like to model the fact that every instance of a class C has as value of
the property P every instance of a class D. In other words, I'm looking for
something analogous to the hasValue restriction, in which, in place of
declaring the relation to a single individual, I could declare the relation
to every individual belonging to a certain class.
This problem is similar to the "Class as values" problem, for which I found
many solutions eg. in [1,2] and to the problem raised in this list with the
message [3]. In practice, the problem has emerged by working on a medical
ontology (for dentistry): for example, how can I express that a specific
class of diseases can affect any (kind of) tooth?

The only reasonable solution I tought (that is an adaption of an usual
solution for the "Class as values" problem) is to have a "representative"
individual for each class. The individual is "related" to its class by an
hasValue restriction on a hasClassRep property. For example, the class Tooth
can be defined as:

   Class: Tooth
   EquivalentTo: hasClassRep VALUE tooth_rep

Then, the relation between classes is expressed as an hasValue restriction
over this individual. For example, the class TSD (a kind of tooth anomalies)
can be represented as:

   Class: TSD
   EquivalentTo: isAnomalyOf VALUE tooth_rep

The problem is that queries and definitions of range, domain and
restrictions for properties become quite intricate, as one must always
consider the possibility of these "indirect" relations.
I think that by using SWRL the problem can be easily solved just by defining
a rule like the following one (in Prolog-like notation):

   isAnomalyOf(X,Y) :- TSD(X), Tooth(Y).

However, for the requirements of our project, I'd rather not go outside OWL..

Has anyone some better idea?
Thanks in advance for any comment or suggestion,
Loris Bozzato

--
[1] N. Noy. Representing classes as property values on the semanticweb.
W3C note, W3C, Apr. 2005.
http://www.w3.org/TR/2005/NOTE-swbp-classes-as-values-20050405

[2] K. Supekar, C. G. Chute, and H. Solbrig. Representing lexical components
of medical terminologies in owl. In AMIA Annual Symposium Proceedings, pages
719-23. American Medical Informatics Association, 2005.

[3] "Specifying that an individual has a set of values"
http://lists.w3.org/Archives/Public/public-owl-dev/2007JulSep/0126.html

-- 
Loris Bozzato - PhD student
Dipartimento di Informatica e Comunicazione
Università degli Studi dell'Insubria, Varese, Italy

Tel: (+39) 0332 218949 - Fax: (+39) 0332 218919
Mail: loris.bozzato@uninsubria.it
Web: http://www.dicom.uninsubria.it/~loris.bozzato/<http://www.dicom.uninsubria.it/%7Eloris.bozzato/>

Received on Saturday, 31 January 2009 19:59:52 UTC