use of org.apache.stanbol.reasoners.servicesapi.ReasoningServiceException in project stanbol by apache.
the class JenaReasoningServiceTest method testEnrich.
/**
* Tests the enrich(Model data) method
*
* @param service
*/
private void testEnrich(JenaReasoningService service) {
// Clean data
TestData.alexdma.removeProperties();
// Prepare data
TestData.alexdma.addProperty(RDF.type, TestData.foaf_Person);
// Setup input for the reasoner
Model input = ModelFactory.createUnion(TestData.foaf, TestData.alexdma.getModel());
try {
// Run the method
Set<Statement> inferred = service.runTask(ReasoningService.Tasks.ENRICH, input);
// Prepare the input statements to check the output with
Set<Statement> inputStatements = input.listStatements().toSet();
boolean onlyInferred = true;
log.info("Check for statements to be only the inferred ones");
Set<Statement> badOnes = new HashSet<Statement>();
for (Statement stat : inferred) {
// Must not be a statement in input
if (inputStatements.contains(stat)) {
onlyInferred = false;
badOnes.add(stat);
}
}
log.info("Are there only inferred statements (true)? {}", onlyInferred);
if (!onlyInferred) {
for (Statement bad : badOnes) {
log.error("Found a bad statement in output: {}", bad);
}
}
assertTrue(onlyInferred);
} catch (ReasoningServiceException e) {
log.error("Error thrown: {}", e);
assertTrue(false);
} catch (InconsistentInputException e) {
log.error("Error thrown: {}", e);
assertTrue(false);
} catch (UnsupportedTaskException e) {
log.error("Error thrown: {}", e);
assertTrue(false);
}
// Clean data
TestData.alexdma.removeProperties();
}
use of org.apache.stanbol.reasoners.servicesapi.ReasoningServiceException in project stanbol by apache.
the class AbstractOWLApiReasoningService method run.
/**
* Generic method for running the reasoner
*
* @param input
* @param generators
* @return
*/
@Override
public Set<OWLAxiom> run(OWLOntology input, List<InferredAxiomGenerator<? extends OWLAxiom>> generators) throws ReasoningServiceException, InconsistentInputException {
log.debug("run(OWLOntology input, List<InferredAxiomGenerator<? extends OWLAxiom>> generators)");
try {
// Get the manager
OWLOntologyManager manager = createOWLOntologyManager();
// Get the reasoner
OWLReasoner reasoner = getReasoner(input);
log.info("Running {} reasoner on {} ", reasoner.getClass(), input.getOntologyID());
// To generate inferred axioms
InferredOntologyGenerator inferred = new InferredOntologyGenerator(reasoner, generators);
// We fill an anonymous ontology with the result, the return the
// axiom set
Set<OWLAxiom> axioms = new HashSet<OWLAxiom>();
try {
OWLOntology output = manager.createOntology();
log.debug("Created output ontology: {}", output);
try {
inferred.fillOntology(manager, output);
} catch (InconsistentOntologyException i) {
throw i;
} catch (Throwable t) {
log.error("Some problem occurred:\n {}", t.getStackTrace());
throw new ReasoningServiceException();
}
log.debug("Filled ontology: {}", output);
log.debug("Temporary ID is {}", output.getOntologyID());
axioms = manager.getOntology(output.getOntologyID()).getAxioms();
// IMPORTANT We remove the ontology from the manager
manager.removeOntology(output);
} catch (OWLOntologyCreationException e) {
log.error("An exception have been thrown when instantiating the ontology");
throw new ReasoningServiceException();
}
return axioms;
} catch (InconsistentOntologyException inconsistent) {
/**
* TODO Add report. Why it is inconsistent?
*/
throw new InconsistentInputException();
} catch (Exception exception) {
log.error("An exception have been thrown while executing method run()", exception);
throw new ReasoningServiceException();
}
}
use of org.apache.stanbol.reasoners.servicesapi.ReasoningServiceException in project stanbol by apache.
the class JenaReasoningServiceTest method testIsConsistentWithRules.
/**
* Tests the isConsistent(Model,List<Rule>) method of a service
*
* @param service
*/
private void testIsConsistentWithRules(JenaReasoningService service) {
log.info("Testing reasoner of type {}", service.getClass());
// Prepare the rule set
String source = "" + "\n@prefix foaf: <" + TestData.FOAF_NS + ">." + "\n@prefix ex: <" + TestData.TEST_NS + ">." + "\n[rule1: (?a foaf:knows ?b) (?a foaf:workplaceHomepage ?w) (?b foaf:workplaceHomepage ?w) -> (?a ex:collegueOf ?b)] " + "\n[rule2: (?b foaf:knows ?a) -> (?a foaf:knows ?b)] " + "\n[rule3: (?a ex:collegueOf ?b) -> (?b ex:collegueOf ?a)] ";
// log.info("This is the ruleset: \n {}", source);
List<Rule> rules = TestUtils.parseRuleStringAsFile(source);
log.info("Loaded {} rules", rules.size());
// Clean data
TestData.alexdma.removeProperties();
TestData.enridaga.removeProperties();
Resource wphomepage = TestData.model.createResource("http://stlab.istc.cnr.it");
// Prepare data
TestData.alexdma.addProperty(TestData.foaf_knows, TestData.enridaga);
TestData.alexdma.addProperty(TestData.foaf_workplaceHomepage, wphomepage);
TestData.enridaga.addProperty(TestData.foaf_workplaceHomepage, wphomepage);
// Setup input for the reasoner
Model input = ModelFactory.createUnion(TestData.enridaga.getModel(), TestData.alexdma.getModel());
input = ModelFactory.createUnion(input, TestData.foaf);
try {
// Run the method
boolean isConsistent = service.isConsistent(input, rules);
// Assert true
log.info("Is consistent (true)? {}", isConsistent);
assertTrue(isConsistent);
} catch (ReasoningServiceException e) {
log.error("Error thrown: {}", e);
assertTrue(false);
}
// Clean data
TestData.alexdma.removeProperties();
TestData.enridaga.removeProperties();
}
use of org.apache.stanbol.reasoners.servicesapi.ReasoningServiceException in project stanbol by apache.
the class JenaReasoningServiceTest method testIsConsistent.
/**
*
* @param service
*/
private void testIsConsistent(JenaReasoningService service) {
// Clean data
TestData.alexdma.removeProperties();
// Prepare data
TestData.alexdma.addProperty(RDF.type, TestData.foaf_Person);
// Setup input for the reasoner
Model input = ModelFactory.createUnion(TestData.foaf, TestData.alexdma.getModel());
try {
// Run the method
assertTrue(service.isConsistent(input));
} catch (ReasoningServiceException e) {
log.error("Error thrown: {}", e);
assertTrue(false);
}
// Clean data
TestData.alexdma.removeProperties();
}
use of org.apache.stanbol.reasoners.servicesapi.ReasoningServiceException in project stanbol by apache.
the class JenaReasoningServiceTest method testEnrich2.
/**
* Tests the enrich(Model data,boolean filtered) method
*
* @param service
*/
private void testEnrich2(JenaReasoningService service) {
// Clean data
TestData.alexdma.removeProperties();
// Prepare data
TestData.alexdma.addProperty(RDF.type, TestData.foaf_Person);
// Setup input for the reasoner
Model input = ModelFactory.createUnion(TestData.foaf, TestData.alexdma.getModel());
try {
// Run the method
Set<Statement> inferred = service.runTask(ReasoningService.Tasks.ENRICH, input, null, false, null);
// Prepare the input statements to check the output with
Set<Statement> inputStatements = input.listStatements().toSet();
log.info("All the input statements must be in the inferred output");
Set<Statement> notInOutput = new HashSet<Statement>();
for (Statement stat : inputStatements) {
if (!inferred.contains(stat)) {
notInOutput.add(stat);
}
}
log.info("Are all input statements in the inferred set (true)? {}", notInOutput.isEmpty());
if (!notInOutput.isEmpty()) {
for (Statement bad : notInOutput) {
log.error("Found a statement not included in output: {}", bad);
}
}
assertTrue(notInOutput.isEmpty());
} catch (ReasoningServiceException e) {
log.error("Error thrown: {}", e);
assertTrue(false);
} catch (InconsistentInputException e) {
log.error("Error thrown: {}", e);
assertTrue(false);
} catch (UnsupportedTaskException e) {
log.error("Error thrown: {}", e);
assertTrue(false);
}
// Clean data
TestData.alexdma.removeProperties();
}
Aggregations