Re: class-specific inverse

On 1 Jun 2009, at 08:27, Lee Feigenbaum wrote:

> OK, so I always feel very ignorant asking OWL questions, so  
> apologies in advance. The subject of the email is probably pretty  
> poor also. :-)
>
> I'm wondering if there's anyway to assert the following in OWL.  
> (very contrived example, since it's 3am and off the top of my head)
>
> Book, Magazine, Newspaper are each a subclass of Publication.
>
> Publication is the domain of a property published_by which relates a  
> publication to its publisher.
>
> I have 3 other properties as well:
>
> * publishes_book relates a publisher to a book that the publisher  
> publishes.
> * publishes_magazine relates a publisher to a magazine that the  
> publisher publishes.
> * publishes_newspaper relates a publisher to a newspaper that the  
> publisher publishes.
>
> I'd like X published_by P to entail P publishes_book X iff X  
> rdf:type Book, and similarly for magazine and newspaper.
>
> That is, I'm wondering if there's a way to say that published_by is  
> the inverse of the other 3 properties in (and only in) the context  
> of the appropriate subclass.
>
> (I know this particular example would make a lot more sense with a  
> reusable "publishes" property instead of the specific ones, but then  
> I don't get to ask this question.)
>
> Anyway, please let me know if this makes no sense and I'll either  
> try to clarify it or wander meekly back into the corner of my OWL  
> ignorance. :-)
>

ok, let's see: you have classes

Publisher,

Publication, with subclasses Books and Newspaper, etc.

Then you can have properties

publishes with
- domain Publisher (if you like) and
- range Publication (if you like) and
- inverse publishedBy (if you like) and
- subproperties
        publishesBook (with range Book) and
        publishesNewspaper (with range Newspaper)...

thus you have that, if

Springer publishesBook  YourBook, then this entails (due to subproperty)

Springer publishes  YourBook and thus also

YourBook publishedBy Springer (due to inverse) and
YourBook being an instance of Book and Publication and
Springer being an instance of Publisher

But, if you have

Springer publishes  YourBook and YourBook is an instance of Book, then  
this does *not* entail  Springer publishesBook  YourBook

(the "range" only works in one direction, i.e., if  Springer  
publishesBook  YourBook and the range of publishesBook is Book, *then*  
YourBook is an instance of Book --- but not the other way round)

Did this answer your question? Cheers, Uli

> thanks,
> Lee
>

Received on Monday, 1 June 2009 11:05:16 UTC