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

Commit 208f48c

Browse files
Added test for ForwardRuleReasonerRDFS rdfs3 rule
1 parent 6fdfcfa commit 208f48c

2 files changed

Lines changed: 69 additions & 0 deletions

File tree

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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(Class(:Cls01))
7+
Declaration(Class(:Cls02))
8+
Declaration(Class(:Cls03))
9+
10+
Declaration(NamedIndividual(:indivA))
11+
Declaration(NamedIndividual(:indivB))
12+
Declaration(NamedIndividual(:indivC))
13+
Declaration(NamedIndividual(:indivD))
14+
Declaration(NamedIndividual(:indivE))
15+
Declaration(NamedIndividual(:indivF))
16+
17+
Declaration(ObjectProperty(:objProp01))
18+
Declaration(ObjectProperty(:objProp02))
19+
ObjectPropertyRange(:objProp02 :Cls01)
20+
21+
Declaration(DataProperty(:dataProp01))
22+
Declaration(DataProperty(:dataProp02))
23+
DataPropertyRange(:dataProp02 :someDataType)
24+
25+
Declaration(AnnotationProperty(:annProp01))
26+
Declaration(AnnotationProperty(:annProp02))
27+
AnnotationPropertyRange(:annProp02 :Cls03)
28+
29+
ObjectPropertyAssertion(:objProp01 :indivA :indivB)
30+
ObjectPropertyAssertion(:objProp02 :indivB :indivC)
31+
32+
DataPropertyAssertion(:dataProp01 :indivC "ABCD")
33+
DataPropertyAssertion(:dataProp02 :indivD "DCBA")
34+
35+
AnnotationAssertion(:annProp01 :indivE "wxyz")
36+
AnnotationAssertion(:annProp02 :indivF :someIRI)
37+
)

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,36 @@ class ForwardRuleReasonerRDFSTest extends FunSuite with SharedSparkContext with
6262
assert(inferred.contains(df.getOWLClassAssertionAxiom(cls02, indivD)))
6363
assert(inferred.contains(df.getOWLClassAssertionAxiom(cls03, indivF)))
6464
}
65+
66+
/**
67+
* rdfs3
68+
* Condition:
69+
* aaa rdfs:range xxx .
70+
* yyy aaa zzz .
71+
* Consequence:
72+
* zzz rdf:type xxx .
73+
*/
74+
test("Rule rdfs3 should return correct results") {
75+
val cls01 = df.getOWLClass(defaultPrefix + "Cls01")
76+
val indivC = df.getOWLNamedIndividual(defaultPrefix + "indivC")
77+
78+
val input = getClass.getResource(resourcePath + "test_rdfs3.owl").getPath
79+
80+
val axiomsRDD = spark.owl(Syntax.FUNCTIONAL)(input)
81+
val reasoner = new ForwardRuleReasonerRDFS(sc, sc.defaultMinPartitions)
82+
val inferred: Seq[OWLAxiom] = reasoner.apply(axiomsRDD).collect()
83+
84+
// One axiom should be inferred:
85+
// ClassAssertion(:Cls01 :indivC)
86+
//
87+
// The axiom
88+
// AnnotationPropertyRange(:annProp02 :Cls03)
89+
// in connection with
90+
// AnnotationAssertion(:annProp02 :indivF :someIRI)
91+
// doesn't generate a new axiom (which is consistent with what e.g. HermiT
92+
// does).
93+
94+
assert(inferred.size == 1)
95+
assert(inferred.contains(df.getOWLClassAssertionAxiom(cls01, indivC)))
96+
}
6597
}

0 commit comments

Comments
 (0)