I try to understand the rector-normalization-technique [1] for ontologies in detail.

[1] https://douroucouli.wordpress.com/2019/06/29/ontotip-learn-the-rector-normalization-technique/ The article recommends to have an asserted single inheritance structure and introduce multiple inheritance only by inference. As example (implemented in owlready, see [2] for the code) it uses classes as `Protein`, `Insulin`, and `Protein_Hormone`, `Hormone_Role`.

[2] https://nbviewer.ipython.org/github/cknoll/demo-material/blob/main/expertise_system/rector-normalization-minimal.ipynb

Asserted facts:

- `Insulin` `is_subclass_of` `Protein`

- `Insulin` `plays_role` `Hormone_Role`

- `Protein_Hormone` is equivalent to (`Protein` `and` `plays_role` `owl:someValuesFrom` `Hormone_Role`) (defined class)

After the reasoner (both pellet/hermite) ran, `Insulin` is correctly recognized as subclass of `Protein_Hormone`  (expected result).

However, `Insulin` is still also classified as direct subclass of protein. This relation I deem redundant because every instance of `Protein_Hormone` must be a `Protein` by definition. Also, if I apply Protegé, the inferred class structure does not contain this redundant relation, as shown in the attached image.

Question: Is this a bug in owlready or the underlying reasoners or are there just two alternative "philosophical tastes" whether or not a redundant subclass relation should be present in the reasoned ontology?

More Carsten Knoll's questions See All
Similar questions and discussions