Customizing Time Concepts
2010/11/12 Leave a Comment
One issue most people have with applying high-level ontologies is that they normally are very abstract and it is hard to see how they apply to the problem at hand. Time ontologies have been studied for centuries, so philosophers have had plenty of time to simplify and extract the essence of the concepts, but an ontology developer now needs to drag them down from the clouds to the problem area. This can be a problem.
For example, history is full of births and geneology (kings and emperors, for instance). Births are instants, even if the date is not known, and geneologies are sets of relations between births. If dates are known for a birth, then they can be attached to the birth event. This part is simple.
However, there is also general understanding that rules apply to the sequence of time events. For instance, a person cannot be born before his parents (either of them). This is also transitive, so it would apply to grandparents as well, and so on. Prior (see reference in the previous entry) lays out a fairly comprehensive logical system for representing relative time and operators which covers the representation of before, after and so on. If these rules are applied in a birth and geneology ontology, then they would also have to be repeated in many other time-based areas where relative sequences were used (project planning, development, speech, news casts items).
To avoid this, intermediate or upper ontologies can be used to hold the rules and general relations, then application areas can state sub-property relations to “inherit” from the general ontologies, allowing rule reuse.
Using Owl-Time as a base ontology, say a new ontology is defined which defines the following rules (SWRL presentation, sort of):
@prefix time: <http://www.w3.org/2006/time>
time:Instant(?t1), time:Instant(?t2), time:Instant(?t3), time:before(?t1,?t2), time:before(?t2,?t3) -> time:before(?t1,?t3) .
time:Instant(?t1), time:Instant(?t2), time:Instant(?t3), time:after(?t1,?t2), time:after(?t2,?t3) -> time:after(?t1,?t3) .
Pretty simple stuff, of course. Any serious ontology would also include combinations of time:Interval and time:Instant and there are a number of more interesting axioms in Prior’s paper that could be stated as rules in the ontology.
In the Births and Geneologies (gen:) ontology, these concepts and rules would be inherited and extended. The primary concept is gen:Person, which could have a birth property, but to take advantage of the existing types, births are stated as a type of time:Instant and related with an object property (gen:birth). The basic relation between children and parents might be gen:parentOf (with sub-properties gen:motherOf and gen:fatherOf, normally). If relative time is an issue for the application, a rule can be stated thus:
gen:Person(?child), gen:Person(?parent), gen:birth(?child,?t1), gen:birth(?parent, ?t2), gen:parentOf(?parent,?child) -> gen:before(?t2, ?t1).
When this rule fires, the system will know that parents birth dates are before their child birth dates, and thanks to the upper-level ontology rules that work on time:Instant, the same will be true of the grand parents and great-grand-parents.
Of course, if the system is capable of running simple rules like this (and that is a stretch at the moment), the above rule will lead to an exponentially growing set of assertions about dates. If you give 10 kings (just a paternal line), the last will have 9 assertions, the one before will have 8 assertions and so on. Considering that other “interesting” relations and rules may have been added at the upper-level time ontology and that this is only one small dimension that might be needed in even a basic geneology knowledge base, this will be a serious scalability issue.
Normally, a historical application would need to have more than a single line of rulers, and a typical question might be “Who else was alive during his lifetime?” To answer concurrency problems in history, there is no choice but to keep these relations. How can this be improved?