diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/pellet/ReasonerConfiguration.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/pellet/ReasonerConfiguration.java index 5b833a1a4..970c14e4d 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/pellet/ReasonerConfiguration.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/pellet/ReasonerConfiguration.java @@ -30,8 +30,7 @@ public class ReasonerConfiguration { /** * The default reasoner configuration is designed to provide acceptable performance on larger knowledge bases. * It will classify and realize, and add inferred disjointWith statements. - * It ignores domain and range "axioms," on the assumption that they are not truly axioms but editing constraints. - * It also ignores "owl:inverseOf." + * It ignores domain and range "axioms," on the assumption that they are not truly axioms but editing constraints. */ public static ReasonerConfiguration DEFAULT; @@ -78,6 +77,7 @@ public class ReasonerConfiguration { defaultInferenceDrivingPatternAllowSet.add(ObjectPropertyStatementPatternFactory.getPattern(null,RDF.first,null)); defaultInferenceDrivingPatternAllowSet.add(ObjectPropertyStatementPatternFactory.getPattern(null,RDF.rest,null)); defaultInferenceDrivingPatternAllowSet.add(ObjectPropertyStatementPatternFactory.getPattern(null,OWL.disjointWith,null)); + defaultInferenceDrivingPatternAllowSet.add(ObjectPropertyStatementPatternFactory.getPattern(null,OWL.inverseOf,null)); DEFAULT.setInferenceDrivingPatternAllowSet(defaultInferenceDrivingPatternAllowSet); Set defaultInferenceReceivingPatternAllowSet = new HashSet(); defaultInferenceReceivingPatternAllowSet.add(ObjectPropertyStatementPatternFactory.getPattern(null,RDF.type,null)); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/reasoner/SimpleReasoner.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/reasoner/SimpleReasoner.java index 11ebcefa3..4374f0b58 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/reasoner/SimpleReasoner.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/reasoner/SimpleReasoner.java @@ -1678,6 +1678,10 @@ public class SimpleReasoner extends StatementListener { typeURIs = getRemainingAssertedTypeURIs(stmt.getSubject()); } removedABoxTypeAssertion(stmt, inferenceModel, typeURIs); + } else if (doSameAs && stmt.getPredicate().equals(OWL.sameAs)) { + removedABoxSameAsAssertion(stmt, inferenceModel); + } else { + removedABoxAssertion(stmt, inferenceModel); } doPlugins(ModelUpdate.Operation.RETRACT,stmt); } catch (NullPointerException npe) { diff --git a/webapp/test/edu/cornell/mannlib/vitro/webapp/reasoner/SimpleReasonerInversePropertyTest.java b/webapp/test/edu/cornell/mannlib/vitro/webapp/reasoner/SimpleReasonerInversePropertyTest.java index e0f81bb74..0003d576a 100644 --- a/webapp/test/edu/cornell/mannlib/vitro/webapp/reasoner/SimpleReasonerInversePropertyTest.java +++ b/webapp/test/edu/cornell/mannlib/vitro/webapp/reasoner/SimpleReasonerInversePropertyTest.java @@ -81,7 +81,14 @@ public class SimpleReasonerInversePropertyTest extends AbstractTestClass { aBox.add(a,P,b); Assert.assertTrue(inf.contains(b,Q,a)); aBox.add(c,Q,d); - Assert.assertTrue(inf.contains(d,P,c)); + Assert.assertTrue(inf.contains(d,P,c)); + + // delete assertions and verify that inferences go away + aBox.remove(c,Q,d); + Assert.assertFalse(inf.contains(d,P,c)); + aBox.remove(a,P,b); + Assert.assertFalse(inf.contains(b,Q,a)); + } @Test