[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