blob: d783b125115e531825f31efbfe6f24851f5844b6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
package rsacomb
import java.io.File
import org.scalatest.{FlatSpec, Matchers, LoneElement}
import org.semanticweb.owlapi.model._
import uk.ac.manchester.cs.owl.owlapi._
import org.semanticweb.owlapi.dlsyntax.renderer.DLSyntaxObjectRenderer
import tech.oxfordsemantic.jrdfox.logic.{Rule, Variable}
import scala.collection.JavaConverters._
import rsacomb.RSA._
import rsacomb.RDFoxUtil._
object Ontology1_CanonicalModelSpec {
/* Renderer to display OWL Axioms with DL syntax*/
val renderer = new DLSyntaxObjectRenderer()
val ontology_path: File = new File("examples/example1.owl")
val ontology = RSA.loadOntology(ontology_path)
val program = ontology.canonicalModel
val roleR = new OWLObjectPropertyImpl(RSA.base("R"))
val roleS = new OWLObjectPropertyImpl(RSA.base("S"))
val roleT = new OWLObjectPropertyImpl(RSA.base("T"))
val roleR_inv = roleR.getInverseProperty()
val roleS_inv = roleS.getInverseProperty()
val roleT_inv = roleT.getInverseProperty()
val AsubClassOfD = new OWLSubClassOfAxiomImpl(
new OWLClassImpl(RSA.base("A")),
new OWLClassImpl(RSA.base("D")),
Seq().asJava
)
val DsomeValuesFromRB = new OWLSubClassOfAxiomImpl(
new OWLClassImpl(RSA.base("D")),
new OWLObjectSomeValuesFromImpl(
roleR,
new OWLClassImpl(RSA.base("B"))
),
Seq().asJava
)
} // object OWLAxiomSpec
class Ontology1_CanonicalModelSpec
extends FlatSpec
with Matchers
with LoneElement {
import Ontology1_CanonicalModelSpec._
"The program generated from Example #1" should "not be empty" in {
program should not be empty
}
renderer.render(AsubClassOfD) should "be converted into a single Rule" in {
val varX = Variable.create("X")
val visitor = ProgramGenerator(ontology, varX)
val rules = AsubClassOfD.accept(visitor)
rules.loneElement shouldBe a[Rule]
}
renderer.render(roleR) should "be safe" in {
ontology.unsafeRoles should not contain roleR
}
it should "contain S in its conflict set" in {
ontology.confl(roleR) should contain(roleS)
}
renderer.render(roleS) should "be safe" in {
ontology.unsafeRoles should not contain roleS
}
it should "contain R in its conflict set" in {
ontology.confl(roleS) should contain(roleR)
}
renderer.render(roleS_inv) should "be unsafe" in {
ontology.unsafeRoles should contain(roleS_inv)
}
it should ("contain " + renderer.render(
roleR_inv
) + " in its conflict set") in {
ontology.confl(roleS_inv) should contain(roleR_inv)
}
renderer.render(
DsomeValuesFromRB
) should "produce 5 rules" ignore {
val varX = Variable.create("X")
val visitor = ProgramGenerator(ontology, varX)
val rules = DsomeValuesFromRB.accept(visitor)
rules should have length 5
}
} // class OWLAxiomSpec
|