Skip to content
This repository was archived by the owner on Oct 8, 2020. It is now read-only.

Commit 44f6988

Browse files
Added test for Forw.RuleReasonerOWLHorst O10 rule
1 parent da8c023 commit 44f6988

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
Prefix(:=<http://ex.com/default#>)
2+
3+
Ontology(<http://ex.com/ont/sample1.owl>
4+
<http://ex.com/ont/release/123/sample1.owl>
5+
6+
Declaration(ObjectProperty(:objProp01))
7+
Declaration(ObjectProperty(:objProp02))
8+
Declaration(ObjectProperty(:objProp03))
9+
Declaration(ObjectProperty(:objProp04))
10+
11+
Declaration(NamedIndividual(:indivA))
12+
Declaration(NamedIndividual(:indivB))
13+
Declaration(NamedIndividual(:indivD))
14+
Declaration(NamedIndividual(:indivE))
15+
Declaration(NamedIndividual(:indivF))
16+
Declaration(NamedIndividual(:indivG))
17+
Declaration(NamedIndividual(:indivH))
18+
19+
Declaration(NamedIndividual(:indivI))
20+
Declaration(NamedIndividual(:indivJ))
21+
Declaration(NamedIndividual(:indivK))
22+
Declaration(NamedIndividual(:indivL))
23+
Declaration(NamedIndividual(:indivM))
24+
Declaration(NamedIndividual(:indivN))
25+
26+
SameIndividual(:indivA :indivB)
27+
SameIndividual(:indivC :indivD)
28+
SameIndividual(:indivE :indivF)
29+
SameIndividual(:indivG :indivH)
30+
31+
ObjectPropertyAssertion(:objProp01 :indivA :indivI)
32+
ObjectPropertyAssertion(:objProp01 :indivJ :indivC)
33+
ObjectPropertyAssertion(:objProp01 :indivA :indivC)
34+
35+
ObjectPropertyAssertion(:objProp02 :indivF :indivK)
36+
ObjectPropertyAssertion(:objProp02 :indivL :indivH)
37+
ObjectPropertyAssertion(:objProp02 :indivF :indivH)
38+
39+
ObjectPropertyAssertion(:objProp03 :indivM :indivN)
40+
)

sansa-inference-spark/src/test/scala/net/sansa_stack/inference/spark/forwardchaining/axioms/ForwardRuleReasonerOWLHorstTest.scala

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,4 +464,60 @@ class ForwardRuleReasonerOWLHorstTest extends FunSuite with SharedSparkContext w
464464
assert(inferred.contains(
465465
df.getOWLObjectPropertyAssertionAxiom(objProp01, indivA, indivB)))
466466
}
467+
468+
/**
469+
* O10:
470+
* Condition:
471+
* u p v
472+
* u owl:sameAs x
473+
* v owl:sameAs y
474+
* Consequence:
475+
* x p y
476+
*/
477+
test("Rule O10 should return correct results") {
478+
val indivA = df.getOWLNamedIndividual(defaultPrefix + "indivA")
479+
val indivB = df.getOWLNamedIndividual(defaultPrefix + "indivB")
480+
val indivC = df.getOWLNamedIndividual(defaultPrefix + "indivC")
481+
val indivD = df.getOWLNamedIndividual(defaultPrefix + "indivD")
482+
val indivE = df.getOWLNamedIndividual(defaultPrefix + "indivE")
483+
val indivF = df.getOWLNamedIndividual(defaultPrefix + "indivF")
484+
val indivG = df.getOWLNamedIndividual(defaultPrefix + "indivG")
485+
val indivH = df.getOWLNamedIndividual(defaultPrefix + "indivH")
486+
val indivI = df.getOWLNamedIndividual(defaultPrefix + "indivI")
487+
val indivJ = df.getOWLNamedIndividual(defaultPrefix + "indivJ")
488+
val indivK = df.getOWLNamedIndividual(defaultPrefix + "indivK")
489+
val indivL = df.getOWLNamedIndividual(defaultPrefix + "indivL")
490+
491+
492+
val objProp01 = df.getOWLObjectProperty(defaultPrefix + "objProp01")
493+
val objProp02 = df.getOWLObjectProperty(defaultPrefix + "objProp02")
494+
495+
val input = getClass.getResource(resourcePath + "test_o10.owl").getPath
496+
497+
val axiomsRDD = spark.owl(Syntax.FUNCTIONAL)(input)
498+
val reasoner = new ForwardRuleReasonerOWLHorst(sc, sc.defaultMinPartitions)
499+
val inferred: Seq[OWLAxiom] = reasoner.apply(axiomsRDD).collect()
500+
501+
// Six axioms should be inferred:
502+
// ObjectPropertyAssertion(:objProp01 :indivB :indivI)
503+
// ObjectPropertyAssertion(:objProp01 :indivJ :indivD)
504+
// ObjectPropertyAssertion(:objProp01 :indivB :indivD)
505+
//
506+
// ObjectPropertyAssertion(:objProp02 :indivE :indivK)
507+
// ObjectPropertyAssertion(:objProp02 :indivL :indivG)
508+
// ObjectPropertyAssertion(:objProp02 :indivE :indivG)
509+
assert(inferred.size == 6)
510+
assert(inferred.contains(
511+
df.getOWLObjectPropertyAssertionAxiom(objProp01, indivB, indivI)))
512+
assert(inferred.contains(
513+
df.getOWLObjectPropertyAssertionAxiom(objProp01, indivJ, indivD)))
514+
assert(inferred.contains(
515+
df.getOWLObjectPropertyAssertionAxiom(objProp01, indivB, indivD)))
516+
assert(inferred.contains(
517+
df.getOWLObjectPropertyAssertionAxiom(objProp02, indivE, indivK)))
518+
assert(inferred.contains(
519+
df.getOWLObjectPropertyAssertionAxiom(objProp02, indivL, indivG)))
520+
assert(inferred.contains(
521+
df.getOWLObjectPropertyAssertionAxiom(objProp02, indivE, indivG)))
522+
}
467523
}

0 commit comments

Comments
 (0)