Git Product home page Git Product logo

sequoia's Introduction

License: GPL v3 Build Status Build Status

Sequoia: An Open Source OWL 2 DL Reasoner for Java

Welcome to the official repository for Sequoia!

Sequoia is an ontology reasoner that supports OWL 2 DL ontologies. Sequoia can be used from the command line, through the Protégé plug-in, or via the OWL API.

Feel free to fork this repository and submit pull requests.

If you discover a bug, please report it here on GitHub.

Sequoia is free and open-source software that is licensed under the GNU GPL v3 only.

Note: To compile Sequoia you will need JDK 8 installed. Compiling with Java 9 is not supported at this time.

Current Limitations

  • Datatypes are not supported.
  • Neither nominals nor ABox assertions are supported.
  • SWRL rules are not supported.

Publications

The following publications describe the algorithms and implementation of Sequoia.

  1. Andrew Bate‚ Boris Motik‚ Bernardo Cuenca Grau‚ František Simančík, Ian Horrocks. Extending Consequence−Based Reasoning to SRIQ. In Principles of Knowledge Representation and Reasoning: Proceedings of the Fifteenth International Conference. Pages 187–196. AAAI Press. 2016. (Main reference on Sequoia)

    Paper (PDF) | Slides (PDF)

  2. Andrew Bate‚ Boris Motik‚ Bernardo Cuenca Grau‚ František Simančík, Ian Horrocks. Extending Consequence−Based Reasoning to SRIQ (Technical Report). arXiv:1602.04498 [cs.AI]. February, 2016.

    Technical Report (PDF)

  3. Andrew Bate‚ Boris Motik‚ Bernardo Cuenca Grau‚ František Simančík, Ian Horrocks. Extending Consequence−Based Reasoning to SHIQ In Proceedings of the 28th International Workshop on Description Logics. Vol. 1350 of CEUR Workshop Proceedings. CEUR−WS.org. 2015.

    Paper (PDF) | Technical Report (PDF)

Development and Building

Sequoia is developed by Andrew Bate and is actively maintained.

To build Sequoia, you will need SBT installed on your system.

The Sequoia reasoner is comprised of multiple subprojects:

  • reasoner-macros contains Scala macros used throughout the other subprojects.
  • reasoner-kernel contains the implementation of the core algorithm and data structures.
  • reasoner-owl-api contains the implementation of the OWL API bindings.
  • reasoner-cli contains the implementation of the command-line interface of the reasoner.
  • reasoner-protege-plugin contains the implementation of the Protégé plugin.

To compile all subprojects and run all tests in a single command, first clone this repository, and then from the root directory, type sbt test. The tests will take several minutes to complete.

Building the Command-Line Client

From the root directory, type sbt to launch the SBT REPL. Then type project cli and hit Enter, followed by universal:packageBin and hit Enter.

Building the Protégé Plugin

From the root directory, type sbt to launch the SBT REPL. Then type project protegeplugin and hit Enter, followed by osgiBundle and hit Enter.

Acknowledgements

Previous versions of Sequoia were developed at the Knowledge Representation and Reasoning group at the Department of Computer Science of the University of Oxford.

sequoia's People

Contributors

andrewdbate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

balhoff ysgao

sequoia's Issues

Missing classes/subsumptions in classification result

I did a few smaller tests with the latest available version (7e44666) of Sequoia (to be more precise, by using the OWL API 4.5.x and the fat-jar obtained by compiling/assembling the reasoner-owl-api sub-project with sbt) and it seems that Sequoia is not always outputting all subsumptions/classes. For example, with the following code

OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology = manager.loadOntologyFromOntologyDocument(new File("study_protocol-A.owl.xml"));
OWLReasoner reasoner = SequoiaReasonerFactory.getInstance().createNonBufferingReasoner(ontology);
reasoner.precomputeInferences(InferenceType.CLASS_HIERARCHY);
OWLClass owlThingClass = manager.getOWLDataFactory().getOWLThing();
for (Node<OWLClass> classNode : reasoner.getSubClasses(owlThingClass, true)) {
    System.out.println(classNode.getEntities());
}

and the attached study_protocol-A.owl.xml ontology, I get the following output for Sequoia:

[main] INFO com.sequoiareasoner.owlapi.SequoiaReasoner - Starting structural transformation...
[main] INFO com.sequoiareasoner.owlapi.SequoiaReasoner - Done structural transformation.
[CSOWorker-16] INFO com.sequoiareasoner.owlapi.SequoiaReasoner - Saturation completed in 52.
[http://purl.org/net/OCRe/study_protocol.owl#OCRE300012]
[http://purl.org/net/OCRe/study_protocol.owl#OCRE300010]
[http://purl.org/net/OCRe/study_protocol.owl#OCRE300011]

In contrast, if I use HermiT instead of Sequoia, then I get the following output:

[<http://purl.org/net/OCRe/OCRe.owl#OCRE400055>]
[<http://purl.org/net/OCRe/OCRe.owl#OCRE400057>]
[<http://purl.org/net/OCRe/study_protocol.owl#OCRE300010>]
[<http://purl.org/net/OCRe/study_protocol.owl#OCRE300012>]
[<http://purl.org/net/OCRe/study_protocol.owl#OCRE300001>]
[<http://purl.org/net/OCRe/study_protocol.owl#OCRE300011>]
[<http://purl.org/net/OCRe/study_protocol.owl#OCRE300000>]
[<http://purl.org/net/OCRe/study_protocol.owl#OCRE307000>]

The missing classes are also not returned if I request all indirect subclasses of owl:Thing. For most ontologies, I get the same results as with other reasoners, but for a few ontologies such trivial subclasses of owl:Thing seem to be missing.

Help with setup and small test

I am conducting a survey on OWL reasoners still usable in 2023. I would like to check this reasoner out, but I have no knowledge in Scala. Could you provide a binary for Windows/Ubuntu so I can run the CLI? Also a short info how to use this reasoner would be great.

Thanks for your time.

Ignore SWRL rules

Currently Sequoia exits with an error when it encounters a SWRL rule in an ontology:

An error occurred during reasoning: SWRLRule cannot be converted to Axiom.

It would be more convenient if it ignored these axioms and just logged a warning.

Example ontology: http://purl.obolibrary.org/obo/hp.owl

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.