- From: Lee Feigenbaum <lee@thefigtrees.net>
- Date: Mon, 01 Jun 2009 10:44:05 -0400
- To: Uli Sattler <sattler@cs.man.ac.uk>
- CC: public-owl-dev@w3.org
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