From 8af52541d00dc576bac20f9366be979a94d542c1 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Tue, 8 Dec 2020 15:13:18 +0000 Subject: Change how inverse roles are handle on the logic programming side Seems like an easy way to convert inverse roles into atoms is to write `R(y,x)` instead of `R^-(x,y)`. This is still something we need to test and some additional rules that use inverse roles in the naive way are still generated. --- src/main/scala/uk/ac/ox/cs/rsacomb/converter/RDFoxConverter.scala | 3 ++- .../scala/uk/ac/ox/cs/rsacomb/converter/RDFoxConverterSpec.scala | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/scala/uk/ac/ox/cs/rsacomb/converter/RDFoxConverter.scala b/src/main/scala/uk/ac/ox/cs/rsacomb/converter/RDFoxConverter.scala index 6193296..b4f5adb 100644 --- a/src/main/scala/uk/ac/ox/cs/rsacomb/converter/RDFoxConverter.scala +++ b/src/main/scala/uk/ac/ox/cs/rsacomb/converter/RDFoxConverter.scala @@ -425,7 +425,8 @@ trait RDFoxConverter { * @see [[https://www.w3.org/TR/owl2-syntax/#Inverse_Object_Properties Inverse Object Properties]] */ case e: OWLObjectInverseOf => - convert(e.getInverse, term1, term2, suffix + Inverse) + //convert(e.getInverse, term1, term2, suffix + Inverse) + convert(e.getInverse, term2, term1, suffix) /** The infamous impossible case. * diff --git a/src/test/scala/uk/ac/ox/cs/rsacomb/converter/RDFoxConverterSpec.scala b/src/test/scala/uk/ac/ox/cs/rsacomb/converter/RDFoxConverterSpec.scala index a401abf..12f71e8 100644 --- a/src/test/scala/uk/ac/ox/cs/rsacomb/converter/RDFoxConverterSpec.scala +++ b/src/test/scala/uk/ac/ox/cs/rsacomb/converter/RDFoxConverterSpec.scala @@ -86,12 +86,11 @@ class RDFoxConverterSpec } } - "The inverse of an object property" should "be converted into an atom with matching negated predicate" in { + "The inverse of an object property" should "be converted into an atom with inverted subject/object" in { val prop = factory.getOWLObjectProperty(iriString0) val inv = factory.getOWLObjectInverseOf(prop) for (sx <- Seq(Empty, Forward, Backward)) { - val atom = - TupleTableAtom.rdf(term0, IRI.create(iriString0 :: sx + Inverse), term1) + val atom = TupleTableAtom.rdf(term1, IRI.create(iriString0 :: sx), term0) convert(inv, term0, term1, sx) shouldEqual atom } } -- cgit v1.2.3