[Biojava-dev] reasoning

Matthew Pocock matthew_pocock at yahoo.co.uk
Thu Oct 9 14:44:59 EDT 2003


Hi,

I have checked in new ontology code. It doesn't crash, but doesn't 
entirly work yet. Please add sablecc 3.* to your ant/lib directory to 
enable the new ontology parser code to be generated.

Good points:

* much more sane core ontology with a workable type-system - strictly 
typed higher-order predicate logic!

* a fairly nice text format for writing things down - I have yet to find 
anything that can't be represented

* the reasoner can execute proofs that require variable substitution e.g.

  axiom: instance_of(_x, ANY)
  proposition: instance_of(dog, ANY)
  proof: instance_of(_x, ANY)[_x = dog]

  proposition: sub_type_of(_x, mammal)
  proof: sub_type_of(_x, mammal)[_x = dog] ; axiom(dog, mammal)

Bad points:

* I haven't been able to get it to find proofs for things that require 
an inference step without manually pruning the search space e.g.

  axiom: sub_type_of(dog, mammal)
  axiom: sub_type_of(mammal, animal)
  axiom: implies( and(sub_type_of(_x, _y), sub_type_of(_y, _z)),
                             sub_type_of(_x, _z))

  proposition: sub_type_of(dog, animal)

Well, it can do this, but it gets stuck in an infinite recursion before 
it gets arround to using the right variable substitutions.

* It runs slowly - there is loads of scope for naive performance tuning, 
and once inference works propperly, it should be generating it's own 
interpreter in bytecode, but not today.

The code is in CVS, so if you are interested in any of this then please 
get involved. I am wondering which bits will survive - certainly, some 
of the code needs gutting for functional and aesthetic reasons. However, 
I'm not even sure if this is the correct approach.

Matthew




More information about the biojava-dev mailing list