- From: <djs93@gen.cam.ac.uk>
- Date: 01 Sep 2009 11:46:45 +0100
- To: Matthew Graham <mjg@cacr.caltech.edu>
- Cc: Chris Mungall <cjm@berkeleybop.org>, Owl Dev <public-owl-dev@w3.org>
Hi Matthew, I agree with Chris' recommendations here. I just have a couple of minor points to add: in order to be compliant with the names used in the relations ontology, you should use 'preceded_by', rather than 'after'. Also, I'm working on a paper on this problem (I can let you have a partial draft if you are interested). In this paper we use 'begins_at_end_of' for what you call 'immediately_after'. We use before, after and simultaneous only to refer to points in time, rather than things, like stages, that have temporal extent. Good luck, David On Sep 1 2009, Matthew Graham wrote: >HI Chris, > >On Aug 31, 2009, at 6:07 PM, Chris Mungall wrote: > >> >> On Aug 31, 2009, at 5:06 PM, Matthew Graham wrote: >> >>> Hi, >>> >>> I'm trying to model a simple temporal sequence with a class called >>> Stage which has 5 subclasses: 2-cell, 4-cell, 8-cell, 16-cell and >>> 32-cell. >>> >>> There are also four object properties: startStage, endStage, before >>> and after. before and after are defined to be transitive and >>> inverse to each other and with domain Stage and range Stage. >>> >>> 32-cell is then defined to be: after some 16-cell; 16-cell is >>> defined as: after 8-cell; etc. >> >> This doesn't sound right. If you have >> >> EquivalentClasses(32-cell after some 16-cell) >> EquivalentClasses(16-cell after some 8-cell) >> etc >> and after is transitive >> >> then 16-cell will subsume 32-cell. The subsumption hierarchy would be >> >> 1-cell >> 2-cell >> 4-cell >> 8-cell >> ... >> >> If this is really your intent you may wish to name these classes 32- >> cell-or-after, 16-cell-or-after, etc > >I defined them as: subClassOf(after some 16-cell) and not as >EquivalentClass. > > >> If this is not your intent then I would recommend >> >> ObjectProperty(immediatelyAfter) >> TransitiveProperty(after) >> SubPropertyOf(immediatelyAfter after) >> ObjectProperty(immediatelyBefore) >> TransitiveProperty(before) >> SubPropertyOf(immediatelyBefore before) >> inverseProperties(after before) >> inverseProperties(immediatelyAfter immediatelyBefore) >> >> EquivalentClasses(32-cell immediatelyAfter some 16-cell) >> EquivalentClasses(16-cell immediatelyAfter some 8-cell) >> >>> Finally I declare an individual called ptype1 with startStage some >>> 4-cell. >> >> Minor stylistic comment: ptype1 may be a confusing name for an >> individual. Presumably ptype1 is a temporal slice of an embryo? >> >>> I then run the reasoner on the ontology and try the DL Query: >>> startStage some (before 8-cell) >> >> Minor syntactic correction - I think you mean: >> >> startStage some (before some 8-cell) > >Yes that is correct. > >> >>> This does not return ptype1. Why not? Do I have to explicitly state >>> the inverse relationships, e.g. 16-cell before some 32-cell, as >>> well - why are these not inferred during reasoning? >> >> The inverses would be inferred for individual axioms. In this case I >> believe you do need to assert subclassof axioms in the inverse >> direction to get the inference you want. >> >> This should make some intuitive sense: all 32-cell stage instances >> must be preceded by some 16-cell stage instance. However, not every >> 16-cell stage instance is succeeded by some 32-cell stage instance >> (development may be terminated). >> >> For your purposes you may wish to model a 'canonical' developmental >> process in which there is no termination. In this case you can add >> 'fictitious' axioms of the form: >> >> SubClassOf(16-cell (before some 32-cell)) >> >> (preferably annotating them) >> >> SubClassOf("holds in the canonical case" 16-cell (before some 32- >> cell)) >> >> This may get tedious if you have lots of stages. You could possibly >> write some kind of macro that populate an axiom: >> >> SubClassOf("holds in the majority of cases" X (before some Y)) >> >> for every axiom of the form >> >> EquivalentClasses(Y (immediatelyAfter some X)) >> >> There are tools to make this kind of macro-generation easier (OPPL, >> Thea2, LSW) >> >> At some point you will probably want some property chain axioms e.g. >> startsBeforeStage <- startStage o before >> >> possibly even up to the full Allen algebra - then it gets >> complicated.. >> >> Cheers >> Chris >> >> >>> Cheers, >>> >>> Matthew >>> >>> >>> >> > >
Received on Wednesday, 2 September 2009 14:13:09 UTC