Re: class-specific inverse

Uli Sattler wrote:
> 
> 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

Right...

> But, if you have
> 
> Springer publishes  YourBook and YourBook is an instance of Book, then 
> this does *not* entail  Springer publishesBook  YourBook

...But this is the part I'm asking how to do :-)

Alan gave me a pointer that I'll dig through a bit later.

Lee

> (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 14:44:46 UTC