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

Commit c56ad2c

Browse files
Added test for rdfs2 rule
1 parent 2f4eb8d commit c56ad2c

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+
ObjectPropertyDomain(:objProp02 :Cls01)
20+
21+
Declaration(DataProperty(:dataProp01))
22+
Declaration(DataProperty(:dataProp02))
23+
DataPropertyDomain(:dataProp02 :Cls02)
24+
25+
Declaration(AnnotationProperty(:annProp01))
26+
Declaration(AnnotationProperty(:annProp02))
27+
AnnotationPropertyDomain(: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 "zyxw")
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
@@ -30,4 +30,36 @@ class ForwardRuleReasonerRDFSTest extends FunSuite with SharedSparkContext with
3030
assert(reasoner.count() == 16)
3131

3232
}
33+
34+
/**
35+
* rdfs2
36+
* Condition:
37+
* aaa rdfs:domain xxx .
38+
* yyy aaa zzz .
39+
* Consequence:
40+
* yyy rdf:type xxx .
41+
*/
42+
test("Rule rdfs2 should return correct results") {
43+
val cls01 = df.getOWLClass(defaultPrefix + "Cls01")
44+
val cls02 = df.getOWLClass(defaultPrefix + "Cls02")
45+
val cls03 = df.getOWLClass(defaultPrefix + "Cls03")
46+
val indivB = df.getOWLNamedIndividual(defaultPrefix + "indivB")
47+
val indivD = df.getOWLNamedIndividual(defaultPrefix + "indivD")
48+
val indivF = df.getOWLNamedIndividual(defaultPrefix + "indivF")
49+
50+
val input = getClass.getResource(resourcePath + "test_rdfs2.owl").getPath
51+
52+
val axiomsRDD = spark.owl(Syntax.FUNCTIONAL)(input)
53+
val reasoner = new ForwardRuleReasonerRDFS(sc, sc.defaultMinPartitions)
54+
val inferred: Seq[OWLAxiom] = reasoner.apply(axiomsRDD).collect()
55+
56+
// Three axioms should be inferred:
57+
// ClassAssertion(:Cls01 :indivB)
58+
// ClassAssertion(:Cls02 :indivD)
59+
// ClassAssertion(:Cls03 :indivF)
60+
assert(inferred.size == 3)
61+
assert(inferred.contains(df.getOWLClassAssertionAxiom(cls01, indivB)))
62+
assert(inferred.contains(df.getOWLClassAssertionAxiom(cls02, indivD)))
63+
assert(inferred.contains(df.getOWLClassAssertionAxiom(cls03, indivF)))
64+
}
3365
}

0 commit comments

Comments
 (0)