aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/rsacomb/RDFoxClassExprConverter.scala
diff options
context:
space:
mode:
authorFederico Igne <federico.igne@cs.ox.ac.uk>2020-09-30 19:45:25 +0200
committerFederico Igne <federico.igne@cs.ox.ac.uk>2020-09-30 19:45:25 +0200
commit6a29b16dee0592fdeb03b26ff87fd00d57555f78 (patch)
treef50800aa56a2f1b03a538c0a82eaa739ac671466 /src/main/scala/rsacomb/RDFoxClassExprConverter.scala
parent7fd4023ab6d3b8cd379f4119c7bfbeaedca0b7b4 (diff)
downloadRSAComb-6a29b16dee0592fdeb03b26ff87fd00d57555f78.tar.gz
RSAComb-6a29b16dee0592fdeb03b26ff87fd00d57555f78.zip
Add rule generation for unsafe T5 axioms for canonical model
Diffstat (limited to 'src/main/scala/rsacomb/RDFoxClassExprConverter.scala')
-rw-r--r--src/main/scala/rsacomb/RDFoxClassExprConverter.scala21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/main/scala/rsacomb/RDFoxClassExprConverter.scala b/src/main/scala/rsacomb/RDFoxClassExprConverter.scala
index a319d86..2029f0b 100644
--- a/src/main/scala/rsacomb/RDFoxClassExprConverter.scala
+++ b/src/main/scala/rsacomb/RDFoxClassExprConverter.scala
@@ -35,10 +35,11 @@ object RDFoxClassExprConverter {
35 35
36 def apply( 36 def apply(
37 term: Term, 37 term: Term,
38 unsafe: List[OWLObjectPropertyExpression],
38 skolem: SkolemStrategy = SkolemStrategy.None, 39 skolem: SkolemStrategy = SkolemStrategy.None,
39 unsafe: List[OWLObjectPropertyExpression] = List() 40 suffix: RSASuffix = RSASuffix.None
40 ): RDFoxClassExprConverter = 41 ): RDFoxClassExprConverter =
41 new RDFoxClassExprConverter(term, skolem, unsafe) 42 new RDFoxClassExprConverter(term, unsafe, skolem, suffix)
42 43
43 def merge(rules: List[RDFoxRuleShards]): RDFoxRuleShards = { 44 def merge(rules: List[RDFoxRuleShards]): RDFoxRuleShards = {
44 rules.foldLeft(RDFoxRuleShards(List(), List())) { (r1, r2) => 45 rules.foldLeft(RDFoxRuleShards(List(), List())) { (r1, r2) =>
@@ -53,8 +54,9 @@ object RDFoxClassExprConverter {
53 54
54class RDFoxClassExprConverter( 55class RDFoxClassExprConverter(
55 term: Term, 56 term: Term,
57 unsafe: List[OWLObjectPropertyExpression],
56 skolem: SkolemStrategy, 58 skolem: SkolemStrategy,
57 unsafe: List[OWLObjectPropertyExpression] 59 suffix: RSASuffix
58) extends OWLClassExpressionVisitorEx[RDFoxRuleShards] { 60) extends OWLClassExpressionVisitorEx[RDFoxRuleShards] {
59 61
60 import RDFoxUtil.owlapi2rdfox; 62 import RDFoxUtil.owlapi2rdfox;
@@ -68,7 +70,7 @@ class RDFoxClassExprConverter(
68 70
69 // OWLObjectIntersectionOf 71 // OWLObjectIntersectionOf
70 override def visit(expr: OWLObjectIntersectionOf): RDFoxRuleShards = { 72 override def visit(expr: OWLObjectIntersectionOf): RDFoxRuleShards = {
71 val visitor = new RDFoxClassExprConverter(term, skolem, unsafe) 73 val visitor = new RDFoxClassExprConverter(term, unsafe, skolem, suffix)
72 // TODO: maybe using `flatMap` instead of `merge` + `map` works as well 74 // TODO: maybe using `flatMap` instead of `merge` + `map` works as well
73 RDFoxClassExprConverter.merge( 75 RDFoxClassExprConverter.merge(
74 expr.asConjunctSet.asScala.toList 76 expr.asConjunctSet.asScala.toList
@@ -78,7 +80,7 @@ class RDFoxClassExprConverter(
78 80
79 // OWLObjectOneOf 81 // OWLObjectOneOf
80 override def visit(expr: OWLObjectOneOf): RDFoxRuleShards = { 82 override def visit(expr: OWLObjectOneOf): RDFoxRuleShards = {
81 val visitor = RDFoxClassExprConverter(term, skolem) 83 val visitor = RDFoxClassExprConverter(term, unsafe, skolem, suffix)
82 // TODO: review nominal handling. Here we are taking "just" one 84 // TODO: review nominal handling. Here we are taking "just" one
83 val ind = expr.individuals 85 val ind = expr.individuals
84 .collect(Collectors.toList()) 86 .collect(Collectors.toList())
@@ -126,9 +128,10 @@ class RDFoxClassExprConverter(
126 y 128 y
127 ) 129 )
128 } 130 }
129 val classVisitor = new RDFoxClassExprConverter(term1, skolem, unsafe) 131 val classVisitor =
132 new RDFoxClassExprConverter(term1, unsafe, skolem, suffix)
130 val classResult = expr.getFiller.accept(classVisitor) 133 val classResult = expr.getFiller.accept(classVisitor)
131 val propertyVisitor = new RDFoxPropertyExprConverter(term, term1, skolem) 134 val propertyVisitor = new RDFoxPropertyExprConverter(term, term1, suffix)
132 val propertyResult = expr.getProperty.accept(propertyVisitor) 135 val propertyResult = expr.getProperty.accept(propertyVisitor)
133 RDFoxRuleShards( 136 RDFoxRuleShards(
134 classResult.res ++ propertyResult ++ head, 137 classResult.res ++ propertyResult ++ head,
@@ -142,12 +145,12 @@ class RDFoxClassExprConverter(
142 val vars = List(RSA.getFreshVariable(), RSA.getFreshVariable()) 145 val vars = List(RSA.getFreshVariable(), RSA.getFreshVariable())
143 val classResult = RDFoxClassExprConverter.merge( 146 val classResult = RDFoxClassExprConverter.merge(
144 vars 147 vars
145 .map(new RDFoxClassExprConverter(_, skolem, unsafe)) 148 .map(new RDFoxClassExprConverter(_, unsafe, skolem, suffix))
146 .map(expr.getFiller.accept(_)) 149 .map(expr.getFiller.accept(_))
147 ) 150 )
148 val propertyResult = 151 val propertyResult =
149 vars 152 vars
150 .map(new RDFoxPropertyExprConverter(term, _, skolem)) 153 .map(new RDFoxPropertyExprConverter(term, _, suffix))
151 .map(expr.getProperty.accept(_)) 154 .map(expr.getProperty.accept(_))
152 .flatten 155 .flatten
153 RDFoxRuleShards( 156 RDFoxRuleShards(