- 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