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

TODO: Perform OWL Reasoner Evaluation #18

Open
1 task done
callahantiff opened this issue Nov 22, 2019 · 18 comments
Open
1 task done

TODO: Perform OWL Reasoner Evaluation #18

callahantiff opened this issue Nov 22, 2019 · 18 comments
Assignees
Labels
knowledge graph release v3.0.0 noting work and issues related to release v3.0.0

Comments

@callahantiff
Copy link
Owner

callahantiff commented Nov 22, 2019

TODO: Perform comparison of OWL reasoners.

During today's meeting with @bill-baumgartner, we outlined how we will perform an evaluation of OWL reasoners on the PheKnowLator V.2.0 KG.

OWL Reasoner Selection Criteria
Using the following reviews (shown below), we selected reasoners that met the following criteria:

  1. Low response time
  2. Available via the OWLAPI
  3. Open source
Khamparia A, Pandey B. Comprehensive analysis of semantic
web reasoners and tools: a survey. Education and Information
Technologies. 2017 Nov 1;22(6):3121-45.
Parsia B, Matentzoglu N, Gonçalves RS, Glimm B, Steigmiller A.
The OWL reasoner evaluation (ORE) 2015 competition report.
Journal of Automated Reasoning. 2017 Dec 1;59(4):455-82.

Eligible Reasoners:

Reasoner Language OWLTools
ELK EL Yes
ELepHant EL No
Pellet DL Yes
RACER DL No
FACT++ DL No
Chainsaw DL No
Konclude DL No
Crack DL No
TrOWL DL+EL No
MORe DL+EL No

@bill-baumgartner - to determine what reasoners were available in OWLTools, I ran the following:

./owltools -h

Next Steps:

  • Verify which of the reasoners above are currently included in OWLTools. For those that are not in the list, @bill-baumgartner and I will look into what is involved with adding the missing algorithms to OWLTools.

Evaluation Steps:

  1. Benchmark each of the algorithms on HPO+Imports

    • Run-time
    • Justifications
    • Count of inferred axioms
    • Consistency
  2. For all algorithms that pass the benchmark, run them against PheKnowLator

    • Including disjointness axioms
    • Excluding disjointness axioms
  3. Clinician Evaluation via @jwyrwa

    • Create a spreadsheet of the inferred axioms by algorithm and mark them as:
      • Correct/Incorrect
      • Definitely Clinically relevant, Maybe clinically relevant, not clinically relevant

@bill-baumgartner - did I forget anything?

@callahantiff
Copy link
Owner Author

@bill-baumgartner - I won't be able to meet during our normal Wednesday time, but can meet anytime today after 1pm and anytime tomorrow (for the most part). Let me know that works best for you!

@bill-baumgartner
Copy link
Collaborator

Evaluation steps look good. What was the result of ./owltools -h?
I can meet @ 1pm today. Tomorrow looks dicey due to the weather forecast.

@callahantiff
Copy link
Owner Author

Evaluation steps look good. What was the result of ./owltools -h?
I can meet @ 1pm today. Tomorrow looks dicey due to the weather forecast.

I have something at 1pm. I could do 12pm or 2pm. Do either of those work?

The result of running ./owltools -h indicated that of our list of potential ontologies, only ELK and Pellet were included.

@bill-baumgartner
Copy link
Collaborator

Noon is great!

@callahantiff
Copy link
Owner Author

@bill-baumgartner - following up from our meeting yesterday. Can you please take a look at OWLTools to see how difficult it might be to add a reasoner from the OWLAPI? Thank you!!

@bill-baumgartner
Copy link
Collaborator

@callahantiff - can you post the list of reasoners we selected?

@callahantiff
Copy link
Owner Author

@callahantiff - can you post the list of reasoners we selected?

No problem, @bill-baumgartner the reasoners we chose are shown in the table below.

Reasoner Language OWLTools
ELK EL Yes
ELepHant EL No
Pellet DL Yes
RACER DL No
FACT++ DL No
Chainsaw DL No
Konclude DL No
Crack DL No
TrOWL DL+EL No
MORe DL+EL No

@bill-baumgartner
Copy link
Collaborator

First pass - the biggest issue is that most of the available reasoners support OWL API v3, and not v4 or v5.


  • fact++ - supports OWL API v4
  • snorocket - not on our list, but supports OWL API v4

I'll take a look at integrating Konclude first as it looks to be doable, and then perhaps we take a closer look and prioritize the rest.

@callahantiff
Copy link
Owner Author

First pass - the biggest issue is that most of the available reasoners support OWL API v3, and not v4 or v5.

I'll take a look at integrating Konclude first as it looks to be doable, and then perhaps we take a closer look and prioritize the rest.

Thanks for the update @bill-baumgartner! I think your plan sounds great! Let me know if I can do anything in the meantime! I will also be in tomorrow if you prefer to meet in person.

@callahantiff
Copy link
Owner Author

@bill-baumgartner - did you want to touch base on this stuff today?

@bill-baumgartner
Copy link
Collaborator

Current status of attempting to use Konclude though the OWL-API is summarized here: ignazio1977/owllink-owlapi#2

Probably not worth meeting today unless you have something you want to discuss.

@bill-baumgartner
Copy link
Collaborator

Turns out that Konclude works well from the command-line (in conjunction with Docker). So far I have not figured out how to retrieve explanations for unsatisfiable classes, but it is straightforward to:

  • check the consistency of an ontology, e.g.
    docker run --rm --name "konclude" -v /local/path/to/ontologies:/data konclude/konclude consistency -i /data/cl.owl
  • classify an ontology, e.g.
    docker run --rm --name "konclude" -v /local/path/to/ontologies:/data konclude/konclude classify -v -i /data/cl.owl -o /data/cl.konclude.out
  • and, check the satisfiability of a specific class, e.g.
    docker run --rm --name "konclude" -v /local/path/to/ontologies:/data konclude/konclude satisfiability -v -i /data/cl.owl -x http://purl.obolibrary.org/obo/CL_2000096

@callahantiff
Copy link
Owner Author

Turns out that Konclude works well from the command-line (in conjunction with Docker). So far I have not figured out how to retrieve explanations for unsatisfiable classes, but it is straightforward to:

  • check the consistency of an ontology, e.g.
    docker run --rm --name "konclude" -v /local/path/to/ontologies:/data konclude/konclude consistency -i /data/cl.owl
  • classify an ontology, e.g.
    docker run --rm --name "konclude" -v /local/path/to/ontologies:/data konclude/konclude classify -v -i /data/cl.owl -o /data/cl.konclude.out
  • and, check the satisfiability of a specific class, e.g.
    docker run --rm --name "konclude" -v /local/path/to/ontologies:/data konclude/konclude satisfiability -v -i /data/cl.owl -x http://purl.obolibrary.org/obo/CL_2000096

Awesome, thanks Bill! Once I have the graph built I will give this a try! Happy to help dig around to find the output for unsatisfiable classes too.

@callahantiff
Copy link
Owner Author

callahantiff commented Mar 25, 2020

Morning @bill-baumgartner!

Below is a link to download a zipped directory of the ontologies we can use for the reasoner challenge. I have spent the last few days extensively cleaning these files (i.e. removed punning, fixing erroneous Literal typing, correcting inconsistent imported ontology identifiers, etc.). I also went ahead and ran each cleaned file through ELK to make sure that the cleaning didn't inadvertently cause other errors. All of them passed.


Download Link: reasoner_challenge.zip


Directory Contents
Aside from the clean single ontology files, you will also find:

  • Each individual, cleaned ontology (n=10)
  • A file for each pairwise ontology merge (n=45; naming scheme: ont1_ont2_merged.owl)
  • A file of all of the single ontologies merged together (all_ontologies_merged.owl)

Note. All ontologies in the directory contain all original entities (i.e. not had all annotation assertions removed to create the minimal symbolic representation). I figured we should start with them intact and if need be, apply the reduction transformation later on (it's super easy to do).

Question: @bill-baumgartner - do we want all triple-, quad-, ...n-1-wise merge files? It is easy to generate these, but thought I would ask just in case you had something else in mind.

Ok, that's all for now, see you in a few hours! 😄 🎉

@callahantiff
Copy link
Owner Author

callahantiff commented Mar 26, 2020

@bill-baumgartner - here is the Jupyter Notebook I mentioned during our meeting today (incase you are curious).

@callahantiff
Copy link
Owner Author

@bill-baumgartner - just wanted to check-in and see how the great reasoner challenge of 2020 was going? Still OK to meet at our usual time tomorrow?

@bill-baumgartner
Copy link
Collaborator

Yep, let's meet. I should have some preliminary data to show you.

@callahantiff
Copy link
Owner Author

Yep, let's meet. I should have some preliminary data to show you.

@bill-baumgartner - Woo hoo! Sounds great, I am looking forward to it!

@callahantiff callahantiff added release v3.0.0 noting work and issues related to release v3.0.0 and removed other labels Oct 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
knowledge graph release v3.0.0 noting work and issues related to release v3.0.0
Projects
None yet
Development

No branches or pull requests

2 participants