Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some reasoners not working with the ontology #1957

Open
madbkr opened this issue Oct 21, 2024 · 5 comments
Open

Some reasoners not working with the ontology #1957

madbkr opened this issue Oct 21, 2024 · 5 comments
Labels
meta issue Issue that collects information about topics and will be closed after detailled issues are solved. To do Issues that haven't got discussed yet

Comments

@madbkr
Copy link
Contributor

madbkr commented Oct 21, 2024

Description of the issue

I agreed to take a look at the question why the OEO doesn't seem to work with Pellet but works fine with Hermit or ELK. I agreed to document all findings in one issue.

Ideas of solution

If you already have ideas for the solution describe them here

Workflow checklist

  • [x ] I am aware of the workflow for this repository
@madbkr madbkr added the To do Issues that haven't got discussed yet label Oct 21, 2024
@stap-m stap-m added this to Issues Oct 21, 2024
@github-project-automation github-project-automation bot moved this to To do in Issues Oct 21, 2024
@madbkr madbkr added the meta issue Issue that collects information about topics and will be closed after detailled issues are solved. label Oct 21, 2024
@madbkr
Copy link
Contributor Author

madbkr commented Oct 21, 2024

First of all:
Not working in the case of pellet means that the reasoner doesn't even initialize. No error message, no progress bar.
HermiT works fine with all OEO files, ELK also works but gives out warnings:

INFO  11:55:25  Potential incompleteness due to occurrences of DataProperty
   INFO  11:55:25  1 occurrence of DataProperty found in the current ontology. Enable DEBUG for details
   INFO  11:55:25  Potential incompleteness due to occurrences of DataPropertyDomain
   INFO  11:55:25  1 occurrence of DataPropertyDomain found in the current ontology. Enable DEBUG for details
   INFO  11:55:25  Potential incompleteness due to occurrences of Datatype
   INFO  11:55:25  6 occurrences of Datatype found in the current ontology. Enable DEBUG for details
   INFO  11:55:25  Potential incompleteness due to occurrences of DisjointObjectProperties
   INFO  11:55:25  16 occurrences of DisjointObjectProperties found in the current ontology. Enable DEBUG for details
   INFO  11:55:25  Potential incompleteness due to occurrences of InverseObjectProperties
   INFO  11:55:25  15 occurrences of InverseObjectProperties found in the current ontology. Enable DEBUG for details
   INFO  11:55:25  ... 6 different incompleteness problem types detected

I will look into those warnings in the future.

Edit:
This seems to be a feature only ELk has:
"Keep track of features that cause incompleteness of reasoning results."
as found in the release notes.

@madbkr
Copy link
Contributor Author

madbkr commented Oct 21, 2024

Some testing indicates that Pellet actually does work with the OEO. It only does it very very slowly.

I started the reasoner in all the separate OEO files and Pellet started with no problem - excepts foroeo-physicalwhere it took several minutes.
oeo-shared-axioms which imports oeo-physical was the only file that didn't even show a progress bar anymore.

So I tested if removing some imports from oeo-shared-axioms would make a difference and it does:
Removing oeo-physical fixes the problem entirely.
Keeping oeo-physical and ONE other same level import (like oeo-model or oeo-sector) will still work but Pellet takes several hours to start.

From this I would conclude that Pellet would eventually start in the whole OEO - but may very well take days to do so.

In my opinion the problem is either:

@madbkr
Copy link
Contributor Author

madbkr commented Oct 21, 2024

Apparently it is possible to set up Pellet directly via command line or via the ontology tool NeOn. Sadly I couldn't get NeOn or the command option to run on my system to test it - at least not yet.

This would test if the problem may be related to Protégé.

However as we are also working with the ROBOT tool we might want to stay away from Pellet anyway as ROBOT doesn't support it in it's reasoning functions while HermiT and ELK are supported.

Edit:
I managed to get the NeOn toolkit to run but I can't find a way to install the Pellet plugin anymore. I am not surprised as the toolkit used almost 20 year old Java. Many linked resources don't exist anymore.

@madbkr
Copy link
Contributor Author

madbkr commented Oct 23, 2024

What is the difference betweeen the 3 reasoners? There are some according to this paper:
https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=9091e269a2cf7a44b46681b3de3ca489a36ad243

Note that it is about 10 years old, so information may be outdated. I found at least one case where ist seems to be. I’ll summerize the most meaningfull ones.

Both HermiT and Pellet are working based on tableau. HermiT however is using the faster hypertableau, possibly explaining why the difference for a big ontology like the OEO is this severe. Tablau based performs better on non-horn based description logic while the consequence based ELK would perform better on horn-based DL.

According to this paper:
https://ceur-ws.org/Vol-1193/paper_10.pdf
Pellet actually uses both tableau and consequence based approaches – but only for lightweight description logic.

According to the first paper mentioned, both Pellet and HermiT handle SROIQ(D) while ELK’s expressivity is only the lightweight description logic

Pellet can use incremental classification, the other 2 cannot. That means that finished classification can be re-used when new content is implemented.

While all 3 have support for rules, ELK doesn’t support SWRL.

According to the paper only Pellet offers justifications – but I tested that and all 3 gave me an explaination for an inconsistant class. So that is outdated.

Only Pellet supports the Jena API.

ELK doesn’t offer Abox reasoning.

I would conclude that most of those make little difference to us.

@madbkr
Copy link
Contributor Author

madbkr commented Oct 28, 2024

Here is more info on the ELK warnings. Since we now have the IRI of the entity that cause them we can look at the potential incompleteness if need occurs.

WARN  14:44:50  Ontology satisfiability cannot be checked! Enable INFO for details.
   INFO  14:44:50  Potential incompleteness due to occurrences of AsymmetricObjectProperty
   INFO  14:44:50  1 occurrence of AsymmetricObjectProperty found in the current ontology. Enable DEBUG for details
  DEBUG  14:44:50  AsymmetricObjectProperty(<http://openenergy-platform.org/ontology/oeo/OEO_00000532>)
   INFO  14:44:50  Potential incompleteness due to occurrences of DataHasValue
   INFO  14:44:50  4 occurrences of DataHasValue found in the current ontology. Enable DEBUG for details
  DEBUG  14:44:50  SubClassOf(<http://openenergy-platform.org/ontology/oeo/OEO_00020090> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://openenergy-platform.org/ontology/oeo/OEO_00030035> ObjectSomeValuesFrom(<http://openenergy-platform.org/ontology/oeo/OEO_00040010> <http://purl.obolibrary.org/obo/UO_0000036>) DataHasValue(<http://openenergy-platform.org/ontology/oeo/OEO_00140178> "1"^^<http://www.w3.org/2001/XMLSchema#integer>))))
  DEBUG  14:44:50  SubClassOf(<http://openenergy-platform.org/ontology/oeo/OEO_00020097> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://openenergy-platform.org/ontology/oeo/OEO_00030035> ObjectSomeValuesFrom(<http://openenergy-platform.org/ontology/oeo/OEO_00040010> <http://purl.obolibrary.org/obo/UO_0000036>) DataHasValue(<http://openenergy-platform.org/ontology/oeo/OEO_00140178> "1"^^<http://www.w3.org/2001/XMLSchema#integer>))))
  DEBUG  14:44:50  SubClassOf(<http://openenergy-platform.org/ontology/oeo/OEO_00020091> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://openenergy-platform.org/ontology/oeo/OEO_00030035> ObjectSomeValuesFrom(<http://openenergy-platform.org/ontology/oeo/OEO_00040010> <http://purl.obolibrary.org/obo/UO_0000033>) DataHasValue(<http://openenergy-platform.org/ontology/oeo/OEO_00140178> "1"^^<http://www.w3.org/2001/XMLSchema#integer>))))
  DEBUG  14:44:50  ...
   INFO  14:44:50  Potential incompleteness due to occurrences of DataProperty
   INFO  14:44:50  3 occurrences of DataProperty found in the current ontology. Enable DEBUG for details
  DEBUG  14:44:50  Declaration(DataProperty(<http://openenergy-platform.org/ontology/oeo/OEO_00140178>))
  DEBUG  14:44:50  Declaration(DataProperty(<http://openenergy-platform.org/ontology/oeo/OEO_00140170>))
  DEBUG  14:44:50  ...
   INFO  14:44:50  Potential incompleteness due to occurrences of DataPropertyDomain
   INFO  14:44:50  2 occurrences of DataPropertyDomain found in the current ontology. Enable DEBUG for details
  DEBUG  14:44:50  DataPropertyDomain(<http://openenergy-platform.org/ontology/oeo/OEO_00140170> <http://openenergy-platform.org/ontology/oeo/OEO_00000274>)
  DEBUG  14:44:50  DataPropertyDomain(<http://openenergy-platform.org/ontology/oeo/OEO_00140178> <http://openenergy-platform.org/ontology/oeo/OEO_00000350>)
   INFO  14:44:50  Potential incompleteness due to occurrences of Datatype
   INFO  14:44:50  17 occurrences of Datatype found in the current ontology. Enable DEBUG for details
  DEBUG  14:44:50  Declaration(Datatype(<http://www.w3.org/2001/XMLSchema#string>))
  DEBUG  14:44:50  Declaration(Datatype(<http://www.w3.org/2001/XMLSchema#boolean>))
  DEBUG  14:44:50  Declaration(Datatype(<http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral>))
  DEBUG  14:44:50  ...
   INFO  14:44:50  ... 17 different incompleteness problem types detected

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta issue Issue that collects information about topics and will be closed after detailled issues are solved. To do Issues that haven't got discussed yet
Projects
Status: To do
Development

No branches or pull requests

1 participant