Konclude via OWL API
Konclude does not have a direct OWL API interface yet. However, Java applications using the OWL API can easily link to Konclude by using the OWLlink OWL API Adapter. For that purpose, Konclude has to be started as an OWLlink server (see Konclude via OWLlink for details), the library of the OWLlink OWL API Adapter has to be added to the Java program and an OWLReasoner has to be created with the help of the OWLlinkHTTPXMLReasonerFactory (see OWLlink OWL API Adapter Documentation for details). For example, the following Java program creates a small ontology with the OWL API, creates an OWLReasoner adapter with the OWLlinkHTTPXMLReasonerFactory and tests the satisfiability of the class 'http://test.de/#A', which is done by sending the OWL API request via OWLlink to the Konclude OWLlink server.
try {
// create a test ontology
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology = manager.createOntology(IRI.create("http://test.de/"));
OWLDataFactory dfactory = manager.getOWLDataFactory();
OWLClass A = dfactory.getOWLClass(IRI.create("http://test.de/#A"));
OWLClass B = dfactory.getOWLClass(IRI.create("http://test.de/#B"));
OWLAxiom a = dfactory.getOWLSubClassOfAxiom(A, B);
manager.addAxiom(ontology, a);
// configure the server end-point
URL url = new URL("http://localhost:8080");
OWLlinkReasonerConfiguration reasonerConfiguration =
new OWLlinkReasonerConfiguration(url);
OWLlinkHTTPXMLReasonerFactory factory = new OWLlinkHTTPXMLReasonerFactory();
OWLReasoner reasoner =
factory.createNonBufferingReasoner(ontology, reasonerConfiguration);
System.out.println("Satisfiability of class " + A.toString() +": " +
reasoner.isSatisfiable(A));
// adding additional axioms to our test ontology to make class A unsatisfiable
OWLAxiom b = dfactory.getOWLSubClassOfAxiom(A, manager.getOWLDataFactory()
.getOWLNothing());
manager.addAxiom(ontology, b);
System.out.println("After ontology changes, satisfiability of class " +
A.toString() +": " + reasoner.isSatisfiable(A));
} catch (Exception e) {
e.printStackTrace();
}
Note, the OWLlink OWL API Adapter requires that all IRIs are valid, i.e., it refuses, for example, to process the entity name ':::///example\\\:::'. Furthermore, since the OWLlink OWL API Adapter serialises all OWL API axioms, which are then again parsed by the OWLlink server, this approach is possibly not very efficient for very big ontologies.