W3C home > Mailing lists > Public > public-owl-dev@w3.org > July to September 2009

Re: Simple modelling of a temporal sequence

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>
Message-ID: <Prayer.1.0.16.0909011146450.28706@indy.gen.cam.ac.uk>
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 GMT

This archive was generated by hypermail 2.3.1 : Wednesday, 27 March 2013 09:32:57 GMT