[Pellet-users] Slow inference (again) (not prepare: classify)

Alejandro Rodríguez González jalo.javier at gmail.com
Thu Feb 21 23:19:57 UTC 2008


Hi Evren,

In first place thanks for your answer.

I will try to explain all from the beggining.

I'm developing a software to make diferential diagnostics in medicine. 
The idea is create an ontology that contains all the medical data that 
are involved in a diagnostic (Basically Laboratory Tests, Symptoms and 
the Diseases).

A disease can be formed with a set of symptoms and/or laboratory tests 
and/or other diseases, that act like a symptom (1). This relationship is 
represented in the ontology with the object properties hasSymptom and 
hasLabTest (*).

Domain                    Property                    Range
--------                   ----------                   -------
Disease                   hasLabTest                  LabTests
Disease                   hasSymptom                Diseases,Symptoms

(*): This properties has inverse property: isLabTestOf, isSymptomOf...

The software will allow to the user to create new "consults", and in 
this consults will introduce symptoms (also diseases, remember (1)) or 
laboratory tests, and the system, with this data will infere the 
possible diseases that match with the data of the consult.

I introduce some data in the ontology (a lot of instances that 
represents real symptoms, labtests and diseases following WHO (World 
Health Organization) assessments (2)) and some tests case to test the 
minimal inference cases (TESTS_DIS, TESTS_SYM and TESTS_LABTESTS classes).

When i start to develop the "inference rules" with the intention of 
obtain the better solution for get perfect inference, i reached the 
conclusion (**) that the better "concept definitions" for the diseases 
(sorry for call it in the past axioms, i thought that this was the 
correct term) was the next:

1) (hasLabTest some Lb1) or (hasLabTest some Lb2) or (hasSymptom some 
Sy1) or (hasSymptom some Sy2) .... etc.
2) hasLabTest only (Lb1 or Lb2 or Lb3 or Lb4 .... etc.)
3) hasSymptom only (Sy1 or Sy2 ... etc.)

[Lb1, Lb2, etc.. are labtests that has the disease] [Sy1, Sy2, etc.. are 
symptoms that has the disease]

(**): In fact, i reached to this conclusion with the help of my end of 
career project director.

Now, i will talk about the two schemes/tests that i make.

SCHEME1: In this scheme i was only using concept definitions for 
TESTS_DIS, not for the rest of the diseases mentioned in (2)

With this scheme, i thought that all was ok, because all works ok: I can 
get perfect inference in a reasonable time (***)

(***): The main idea of this project is the use of ontologies and the 
reasoning with ontologies. Inference time is not very very important, 
but the times must be reasonables, because other softwares like 
Diagnosis Pro are using a BD with SQL consults and obtain the results in 
miliseconds. In the SCHEME1, load data, prepare, classify and realize 
take some seconds (near to 60, depending the machine), and create new 
consults (create the individual, add symptomts, established the 
cardinality and inference the results using java code) to inference over 
the ontology takes near to 20 seconds.

This scheme are in this ontology: http://www.jalojavier.es/humandisease.owl

SCHEME2: SCHEME1 + Concept definitions for the diseases mentioned in (2).

The problem started when i try to introduce new concept definitions for 
the diseases mentioned in (2), the REAL diseases. I introduce concept 
definitions for "Aspergillosis_unspecified_Class":

(hasSymptom some Malaise_and_fatigue_Class) or (hasSymptom some 
Dyspnoea_Class) or (hasSymptom some Anuria_and_oliguria_Class) or .....
hasSymptom only (Malaise_and_fatigue_Class or Dyspnoea_Class or 
Anuria_and_oliguria_Class or Wheezing_Class or ......)
hasLabTest only (Aspergillus_antigen_skin_test_Class or 
Complete_blood_count_unspecified_Class or ..........)

This scheme are stored in: http://www.jalojavier.es/humandisease_v2.owl

In this case, when i introduce this concept definitions, the time 
mentioned before (load data, prepare, classify, etc...) now takes near 
to 7 minutes. This time is very high, not applicable.

And here is where i have my main problem, the inference time is too 
high. It's probably that i'm making something bad, but i don't know 
what. I'm newbie in this world :-)

The idea of this project, as i said, it's bring the possibility of make 
differential diagnosticos in medicine using the capabilities of the 
inference over ontologies, but if the inference time is too high maybe i 
must reconsider my objectives.

I was thinking about possible solutions, but i think that no one is 
helpfull:

1) Using SPARQL to obtain data -> Ruled out, because i'm not using any 
inference capabilitie, and the main idea of the project is use this kind 
of capatibilitie.
2) Use SWRL rules -> I don't know very well how works this, and i'm not 
sure if i will obtain a better performance.
3) Delete data from the ontologie -> I try to delete not used instances, 
and delete some datatype properties, but works equals.

Well, it's all folks :-)

If anyone can help me i will be very gratefull :-)

And sorry for my english!!


Evren Sirin escribió:
> On 2/21/08 10:56 AM, Alejandro Rodríguez González wrote:
>> Hello to all,
>>
>> I was trying to make new test over my ontology removing and changing 
>> some axioms and i get some interesting results.
>>
>> The " 3 ideal axioms" to define a disease in my ontology are the next:
>>   
>
> These are not axioms but concept definitions as the others in your 
> previous email. Are you using these in a SubClassOf or 
> EquivalentClasses axiom in your ontology? Or are you checking the 
> satisfiability of these concepts without adding to the ontology?
>
>> ---
>> 1) (hasLabTest some Lb1) or (hasLabTest some Lb2) or (hasSymptom some 
>> Sy1) or (hasSymptom some Sy2) .... etc.
>> 2) hasLabTest only (Lb1 or Lb2 or Lb3 or Lb4 .... etc.)
>> 3) hasSymptom only (Sy1 or Sy2 ... etc.)
>> ---
>>
>> With this axioms i can make "perfect" inferences.
>> This was the scheme that was using. The problem starts when i 
>> introduce a new disease with a lot of symptoms or labtests, this 
>> scheme did become very slow.
>>
>> I try to remove one by one the axioms, to get better results in the 
>> inference time, and i discover that the "only" axioms are the main 
>> problem.
>>
>> When i remove this axioms, the inference time are faster, but the 
>> inference results are not perfects because i obtain some results that 
>> don't match with the expected.
>>
>> It's normal that this axioms make inference time so high? It's any 
>> solution to solve this?
>>   
>
> I don't really understand what the problem is so it is hard to tell. 
> If the reasoning with the ontology slows down considerably after 
> adding some axioms then providing two versions of the ontology would 
> help us to understand what is going on.
>
>
> Cheers,
> Evren
>
>> Thanks and sorry for so many questions!
>>
>>
>>
>> _______________________________________________
>> Pellet-users mailing list
>> Pellet-users at lists.owldl.com
>> http://lists.owldl.com/mailman/listinfo/pellet-users
>> _______________________________________________
>>
>> Sponsored by Clark & Parsia, LLC http://clarkparsia.com/
>>   
>
>



More information about the Pellet-users mailing list