aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Igne <federico.igne@cs.ox.ac.uk>2021-01-23 12:43:06 +0000
committerFederico Igne <federico.igne@cs.ox.ac.uk>2021-01-23 12:43:06 +0000
commit84a5f8405afd4c471c96e64ee991d2b920fd04e7 (patch)
tree700c19e9594d27b69c9d38fb8ff1170e2b8489b7
parent58435546aec92af87bf37255b0646c66a1218df6 (diff)
downloadRSAComb-84a5f8405afd4c471c96e64ee991d2b920fd04e7.tar.gz
RSAComb-84a5f8405afd4c471c96e64ee991d2b920fd04e7.zip
Add OWLSymmetricObjectPropertyAxiom and OWLSubDataPropertyOfAxiom support
-rw-r--r--src/main/scala/uk/ac/ox/cs/rsacomb/converter/RDFoxConverter.scala22
1 files changed, 17 insertions, 5 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 761cc83..a65fdae 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
@@ -107,9 +107,7 @@ trait RDFoxConverter {
107 * - [[org.semanticweb.owlapi.model.OWLNegativeObjectPropertyAssertionAxiom OWLNegativeObjectPropertyAssertionAxiom]] 107 * - [[org.semanticweb.owlapi.model.OWLNegativeObjectPropertyAssertionAxiom OWLNegativeObjectPropertyAssertionAxiom]]
108 * - [[org.semanticweb.owlapi.model.OWLReflexiveObjectPropertyAxiom OWLReflexiveObjectPropertyAxiom]] 108 * - [[org.semanticweb.owlapi.model.OWLReflexiveObjectPropertyAxiom OWLReflexiveObjectPropertyAxiom]]
109 * - [[org.semanticweb.owlapi.model.OWLSameIndividualAxiom OWLSameIndividualAxiom]] 109 * - [[org.semanticweb.owlapi.model.OWLSameIndividualAxiom OWLSameIndividualAxiom]]
110 * - [[org.semanticweb.owlapi.model.OWLSubDataPropertyOfAxiom OWLSubDataPropertyOfAxiom]]
111 * - [[org.semanticweb.owlapi.model.OWLSubPropertyChainOfAxiom OWLSubPropertyChainOfAxiom]] 110 * - [[org.semanticweb.owlapi.model.OWLSubPropertyChainOfAxiom OWLSubPropertyChainOfAxiom]]
112 * - [[org.semanticweb.owlapi.model.OWLSymmetricObjectPropertyAxiom OWLSymmetricObjectPropertyAxiom]]
113 * - [[org.semanticweb.owlapi.model.OWLTransitiveObjectPropertyAxiom OWLTransitiveObjectPropertyAxiom]] 111 * - [[org.semanticweb.owlapi.model.OWLTransitiveObjectPropertyAxiom OWLTransitiveObjectPropertyAxiom]]
114 * - [[org.semanticweb.owlapi.model.SWRLRule SWRLRule]] 112 * - [[org.semanticweb.owlapi.model.SWRLRule SWRLRule]]
115 */ 113 */
@@ -156,6 +154,13 @@ trait RDFoxConverter {
156 ResultR(List(Rule.create(head, body))) 154 ResultR(List(Rule.create(head, body)))
157 } 155 }
158 156
157 case a: OWLSubDataPropertyOfAxiom => {
158 val term1 = RSAOntology.genFreshVariable()
159 val body = convert(a.getSubProperty, term, term1, suffix)
160 val head = convert(a.getSuperProperty, term, term1, suffix)
161 ResultR(List(Rule.create(head, body)))
162 }
163
159 case a: OWLObjectPropertyDomainAxiom => 164 case a: OWLObjectPropertyDomainAxiom =>
160 convert(a.asOWLSubClassOfAxiom, term, unsafe, skolem, suffix) 165 convert(a.asOWLSubClassOfAxiom, term, unsafe, skolem, suffix)
161 166
@@ -169,9 +174,6 @@ trait RDFoxConverter {
169 case a: OWLDataPropertyDomainAxiom => 174 case a: OWLDataPropertyDomainAxiom =>
170 convert(a.asOWLSubClassOfAxiom, term, unsafe, skolem, suffix) 175 convert(a.asOWLSubClassOfAxiom, term, unsafe, skolem, suffix)
171 176
172 case a: OWLDataPropertyRangeAxiom =>
173 Result() // ignored
174
175 case a: OWLDisjointClassesAxiom => { 177 case a: OWLDisjointClassesAxiom => {
176 val body = a.getOperandsAsList.asScala.toSeq 178 val body = a.getOperandsAsList.asScala.toSeq
177 .flatMap((cls) => convert(cls, term, unsafe, NoSkolem, suffix)._1) 179 .flatMap((cls) => convert(cls, term, unsafe, NoSkolem, suffix)._1)
@@ -192,6 +194,13 @@ trait RDFoxConverter {
192 case a: OWLInverseFunctionalObjectPropertyAxiom => 194 case a: OWLInverseFunctionalObjectPropertyAxiom =>
193 convert(a.asOWLSubClassOfAxiom, term, unsafe, skolem, suffix) 195 convert(a.asOWLSubClassOfAxiom, term, unsafe, skolem, suffix)
194 196
197 case a: OWLSymmetricObjectPropertyAxiom => {
198 val (atoms, rules) = a.asSubPropertyAxioms
199 .map(a => convert(a, term, unsafe, skolem dup a, suffix))
200 .unzip
201 (atoms.flatten, rules.flatten)
202 }
203
195 case a: OWLClassAssertionAxiom => { 204 case a: OWLClassAssertionAxiom => {
196 val ind = a.getIndividual 205 val ind = a.getIndividual
197 ind match { 206 ind match {
@@ -229,6 +238,9 @@ trait RDFoxConverter {
229 ResultF(List(prop)) 238 ResultF(List(prop))
230 } 239 }
231 240
241 case a: OWLDataPropertyRangeAxiom =>
242 Result() // ignored
243
232 /** Catch-all case for all unhandled axiom types. */ 244 /** Catch-all case for all unhandled axiom types. */
233 case a => 245 case a =>
234 throw new RuntimeException( 246 throw new RuntimeException(