Dear developers and forum users,
Task definition:Here is the task that I want to tackle by exploiting the ELK reasoner:
Given an EL ontology O and an atomic concept Q I want to get all (or some that satisfy a certain criteria) complex expressions that subsume Q.
For example, suppose we are given an EL ontology O with the following TBox:
1. (A and B) \sqsubseteq (C and \exists R.D)
2. (C and \exists R.D) \sqsubseteq E
3. E \sqsubseteq Q
Let Q be an atomic concept that we are interested in.
The result that should be returned is:
a) A and B;
b) C and \existsR.D;
c) E;
d) Q.
Ideal target solution:Finding all complex expressions might not be possible in the general case (especially in presence of cycles).
Thus, weneed to introduce some restriction criteria. Ideally given O, Q and a criteria C, the reasoner should return the set of complex expressions that subsume Q and satisfy the criteria C
and also a boolean flag that says whether the computed result is complete or not.
As a criteria one can use the size
k of maximal complex expression that should be returned or time bound t, after which the computation should be stopped.
Solution found so far:One of the possible solutions of the above problem can be probably found by exploring the task
"Querying complex class expressions".
Namely,
we might introduce atomic concepts for each complex expression that
occurs in the TBox and add respective equivalence axioms.
In this case we have the size of the complex expression as a criteria and implicitly set the parameter
k to the maximal size of complex expressions occurring in O. Then we can ask for all subconcepts of Q using
reasoner.getSubClasses("Q", false);
and get some result.
Questions:The result that one obtains using the "Solution found so
far" might be incomplete.
First it might be that there are some complex expressions that are or size bigger then k.
Second there might be some other complex expressions that are of size k but were not returned in the result.
1. Is there a way of checking the completeness of the result?
2. Are there other ways of solving the described task?
Sorry, if this topic is a repetition of some earlier discussion in this forum, I am new to the reasoner and might have missed the relevant answers when looking
for them.
Thanks a lot
Kind regards
Dasha