- From: James A Miller <James_A_Miller@Raytheon.com>
- Date: Mon, 24 Sep 2007 09:12:10 -0500
- To: Bijan Parsia <bparsia@cs.man.ac.uk>
- Cc: "public-owl-dev-request@w3.org" <public-owl-dev@w3.org>, public-owl-dev-request@w3.org
- Message-ID: <OF2ACBE92A.64A6BA26-ON86257360.004DC70F-86257360.004E4053@mck.us.ray.com>
Bijan, Thanks for your detailed response. This seems to fit my "reality" better. Jim Bijan Parsia <bparsia@cs.man.ac.uk> Sent by: public-owl-dev-request@w3.org 09/24/2007 02:54 AM To James A Miller <James_A_Miller@Raytheon.com> cc "public-owl-dev-request@w3.org" <public-owl-dev@w3.org> Subject Re: Domains and Ranges, based on Why the encapsulation? On Sep 23, 2007, at 9:02 PM, James A Miller wrote: > Hello Danny, Michael, Emanuele, and the rest of you subcribers, > > I have a recurrent question, inspired again by the "Why the > encapsulation?" discussion: > > I have been told, by more than one source, that domains and ranges > should *not* be used in (up to) 99% of the cases. The preference > is to use restrictions, due to issues with reuse and inheritance > (among others?). I suspect that the point would be that Domain and Range are fairly blunt tools being global. > I'm curious whether subscribers to this list agree. I used to feel more strongly about it than I do now. It depends on your style. > I have tried to follow this approach, but it seems that I am often > defining properties that *really* apply only to one domain class > and one range class, so I use domain and range, violating this "99% > rule". Maybe all your cases are in the 1% :) A lot depends on the kind of property tree you are developing. Consider having a property "has" vs. "hasColor" or "hasPart" vs. "hasSmallPart". The more specific your property, the more likely a "globalizing" domain or range makes sense. Conversely, if you made the range of "has" to be the class "Color" you're precluded using it for Tastes, etc. If you have a lot of "typed properties" i.e., properties that have their range built into the name, the the domain and range work, but now you have a proliferation of properties (and their attendant domain and ranges). Conversely, if you have fewer more generic properties, they will carry less information and so may be harder to use or harder to determine the intent of a use. Lots of repeated restrictions instead of a single global declaration doesn't seem to great either unless there's some *reason* for the repetition. If you have a property that clearly belongs to one branch in your class hierarchy, then you can domain/range it high in that branch and use local restrictions to say more specific things about it. So, if you have "spatialThing" and "mentalThing" branches, and you may want to restrict "hasPart" or "hasSpatialPart" to range over spatialThing (and domain over it). But there may be some spatial things that have 5 parts, or have no parts! Local restrictions can handle that. The other issue is that multiple domains and ranges are interpreted as intersections. If you want union semantics, you need to use restrictions. I supect that part of this style thing comes from the fact that description logics didn't have domain and range, so there wasn't a lot of exploration on how they might be effectively used and they *can* limit you. A similar case would be forbidding inverse axioms since you can always use an operator. (No one recommends this, afaik.) So, OWL (IIRC) *only* allowed inverse axioms, so every time you wanted to say something about an inverse, you had to coin a new name. In OWL 1.1 (again, IIRC) there is an operator that lets you build an "inverse expression" which you can use instead of the named inverse. I don't know I could make a decent general rule for when to use either. It depend son you, your audience, your application, and the things you are trying to say. Cheers, Bijan.
Received on Monday, 24 September 2007 14:15:56 UTC