Search Mailing List Archives

Limit search to: Subject & Body Subject Author
Sort by: Reverse Sort
Limit to: All This Week Last Week This Month Last Month
Select Date Range     through    

[protege-owl] mapping a non functional property to another class with OWL

Thusitha Mabotuwana thusitha at
Sat Nov 10 15:19:45 PST 2007

I'm sure you'll hear a better way of doing this from someone with more
expertise/experience..but to me it sounds like you need to have some property
linking (PatientDocuments and Patient) classes or (PatientDocuments and
Treatments). The way I understand it, you want the range to be Treatments for
both, PatientDocuments and Patient classes and I would have a new property
hasPatient defined instead of getTreatmentOfPatient you already have:

PatientDocuments hasPatient Patients

and then use a swrl rule:
Patient(?p) ^ hasTreatments(?p, ?tr) ^ hasPatient(?pd, ?p) -> sqwrl:select(?p,
?tr, ?pd)

if you just want to see the patients, treatments and patient documents.

On the otherhand if you want the PatientDocuments class to contain treatment
information, you can define the domain of hasTreatments to be Patient and
PatientDocuments, and then use a swrl rule like:

PatientDocuments(?pd) ^ hasTreatments(?pd, ?tr) ^ Patient(?p) ^
hasTreatments(?p, ?tr) -> select what you want.

Well, that'd be my initial thought anyway..

Quoting Alexander Schinko <aschin at>:

> Dear all,
> I have a modelling problem which I currently cannot solve with Protégé.
> Maybe you have some suggestions for me.
> I have a class B who's properties point to multiple individuals of class A.
> So far no problem, but I would like map this selection directly to another
> class C. As you want it would be like a inverse property between B and C but
> with having the same class A and all the instances selected in B in the
> range.
> It seems that Protege doesn't support it, or maybe you have any ideas for
> workaround?
> Here is an example:
> class Treatments -> lists a list of available Treatments
> class Patient hasTreatments  -> points to some multiple instances of 
> class Treatments
> class PatientDocuments getTreatmentOfPatient -> maps/inherit all the 
> instances defined in hasTreatments property.
> If I create an inverse property between hasTreatments and
> getTreatmentOfPatient in Protege I can't define both having the same range.
> I can try to add a second class to the range of hasTreatments but then I
> will have the class PatientDocuments also in it, which doesn't make any
> sense. If I remove PatientDocuments from the range of hasTreatments the
> domain of getTreatmentOfPatient wont be in PatientDocuments anymore.
> Thanks in advance,
> Alexander
> _______________________________________________
> protege-owl mailing list
> protege-owl at
> Instructions for unsubscribing: 

More information about the protege-owl mailing list