From c6ae617490ad7e2429207e1393415ec9bff7a501 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Mon, 16 Nov 2020 20:09:22 +0000 Subject: Rework suffixes This is a WIP implementation of a generalized way of handling IRI suffixes. It is not currently used everywhere. --- src/main/scala/rsacomb/RSASuffix.scala | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'src/main/scala/rsacomb/RSASuffix.scala') diff --git a/src/main/scala/rsacomb/RSASuffix.scala b/src/main/scala/rsacomb/RSASuffix.scala index f15d01b..7650ae0 100644 --- a/src/main/scala/rsacomb/RSASuffix.scala +++ b/src/main/scala/rsacomb/RSASuffix.scala @@ -1,20 +1,28 @@ -package rsacomb +package rsacomb.suffix -sealed trait RSASuffix { - def getSuffix: String; +import org.semanticweb.owlapi.model.{ + OWLPropertyExpression, + OWLObjectInverseOf, + OWLObjectProperty } -object RSASuffix { +class RSASuffix(val suffix: String => String) { - case object None extends RSASuffix { - def getSuffix: String = "" - } + def +(other: RSASuffix): RSASuffix = + new RSASuffix((s: String) => other suffix (this suffix s)) - case object Forward extends RSASuffix { - def getSuffix: String = "_f" - } + def ::(str: String): String = this suffix str + + def ::(expr: OWLPropertyExpression): String = + expr match { + case e: OWLObjectProperty => e.getIRI.getIRIString :: this + case e: OWLObjectInverseOf => e.getInverse :: this + } - case object Backward extends RSASuffix { - def getSuffix: String = "_b" - } } + +case object Empty extends RSASuffix((x) => x) +case object Forward extends RSASuffix((s) => s"${s}_f") +case object Backward extends RSASuffix((s) => s"${s}_b") +case object Inverse extends RSASuffix((s) => s"${s}_inv") +case class Nth(n: Int) extends RSASuffix((s) => s"${s}_$n") -- cgit v1.2.3