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

Commit e89463a

Browse files
Added test for ForwardRuleReasonerRDFS rdfs5 rule
1 parent 208f48c commit e89463a

2 files changed

Lines changed: 101 additions & 0 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
Declaration(ObjectProperty(:objProp05))
11+
12+
Declaration(DataProperty(:dataProp01))
13+
Declaration(DataProperty(:dataProp02))
14+
Declaration(DataProperty(:dataProp03))
15+
Declaration(DataProperty(:dataProp04))
16+
Declaration(DataProperty(:dataProp05))
17+
18+
Declaration(AnnotationProperty(:annProp01))
19+
Declaration(AnnotationProperty(:annProp02))
20+
Declaration(AnnotationProperty(:annProp03))
21+
Declaration(AnnotationProperty(:annProp04))
22+
Declaration(AnnotationProperty(:annProp05))
23+
24+
SubObjectPropertyOf(:objProp02 :objProp01)
25+
SubObjectPropertyOf(:objProp03 :objProp02)
26+
SubObjectPropertyOf(:objProp04 :objProp03)
27+
SubObjectPropertyOf(:objProp05 :objProp01)
28+
29+
SubDataPropertyOf(:dataProp02 :dataProp01)
30+
SubDataPropertyOf(:dataProp03 :dataProp02)
31+
SubDataPropertyOf(:dataProp04 :dataProp03)
32+
SubDataPropertyOf(:dataProp05 :dataProp01)
33+
34+
SubAnnotationPropertyOf(:annProp02 :annProp01)
35+
SubAnnotationPropertyOf(:annProp03 :annProp02)
36+
SubAnnotationPropertyOf(:annProp04 :annProp03)
37+
SubAnnotationPropertyOf(:annProp05 :annProp01)
38+
)

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

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,4 +94,67 @@ class ForwardRuleReasonerRDFSTest extends FunSuite with SharedSparkContext with
9494
assert(inferred.size == 1)
9595
assert(inferred.contains(df.getOWLClassAssertionAxiom(cls01, indivC)))
9696
}
97+
98+
/**
99+
* rdfs5
100+
* Condition:
101+
* xxx rdfs:subPropertyOf yyy .
102+
* yyy rdfs:subPropertyOf zzz .
103+
* Consequence:
104+
* xxx rdfs:subPropertyOf zzz .
105+
*/
106+
test("Rule rdfs5 should return correct results") {
107+
/*
108+
* Property hierarchies:
109+
*
110+
* :objProp01 :dataProp01 :annProp01
111+
* / \ / \ / \
112+
* :objProp02 :objProp05 :dataProp02 :dataProp05 :annProp02 :annProp05
113+
* | | |
114+
* :objProp03 :dataProp03 :annProp03
115+
* | | |
116+
* :objProp04 :dataProp04 :annProp04
117+
*/
118+
val objProp01 = df.getOWLObjectProperty(defaultPrefix + "objProp01")
119+
val objProp02 = df.getOWLObjectProperty(defaultPrefix + "objProp02")
120+
val objProp03 = df.getOWLObjectProperty(defaultPrefix + "objProp03")
121+
val objProp04 = df.getOWLObjectProperty(defaultPrefix + "objProp04")
122+
123+
val dataProp01 = df.getOWLDataProperty(defaultPrefix + "dataProp01")
124+
val dataProp02 = df.getOWLDataProperty(defaultPrefix + "dataProp02")
125+
val dataProp03 = df.getOWLDataProperty(defaultPrefix + "dataProp03")
126+
val dataProp04 = df.getOWLDataProperty(defaultPrefix + "dataProp04")
127+
128+
val annProp01 = df.getOWLAnnotationProperty(defaultPrefix + "annProp01")
129+
val annProp02 = df.getOWLAnnotationProperty(defaultPrefix + "annProp02")
130+
val annProp03 = df.getOWLAnnotationProperty(defaultPrefix + "annProp03")
131+
val annProp04 = df.getOWLAnnotationProperty(defaultPrefix + "annProp04")
132+
133+
val input = getClass.getResource(resourcePath + "test_rdfs5.owl").getPath
134+
135+
val axiomsRDD = spark.owl(Syntax.FUNCTIONAL)(input)
136+
val reasoner = new ForwardRuleReasonerRDFS(sc, sc.defaultMinPartitions)
137+
val inferred: Seq[OWLAxiom] = reasoner.apply(axiomsRDD).collect()
138+
139+
// Nine axioms should be inferred:
140+
// SubObjectPropertyOf(:objProp03 :objProp01)
141+
// SubObjectPropertyOf(:objProp04 :objProp01)
142+
// SubObjectPropertyOf(:objProp04 :objProp02)
143+
// SubDataPropertyOf(:dataProp03 :dataProp01)
144+
// SubDataPropertyOf(:dataProp04 :dataProp01)
145+
// SubDataPropertyOf(:dataProp04 :dataProp02)
146+
// SubAnnotationProperty(:annProp03 :annProp01)
147+
// SubAnnotationProperty(:annProp04 :annProp01)
148+
// SubAnnotationProperty(:annProp04 :annProp02)
149+
assert(inferred.size == 9)
150+
assert(inferred.contains(df.getOWLSubObjectPropertyOfAxiom(objProp03, objProp01)))
151+
assert(inferred.contains(df.getOWLSubObjectPropertyOfAxiom(objProp04, objProp01)))
152+
assert(inferred.contains(df.getOWLSubObjectPropertyOfAxiom(objProp04, objProp02)))
153+
assert(inferred.contains(df.getOWLSubDataPropertyOfAxiom(dataProp03, dataProp01)))
154+
assert(inferred.contains(df.getOWLSubDataPropertyOfAxiom(dataProp04, dataProp01)))
155+
assert(inferred.contains(df.getOWLSubDataPropertyOfAxiom(dataProp04, dataProp02)))
156+
assert(inferred.contains(df.getOWLSubAnnotationPropertyOfAxiom(annProp03, annProp01)))
157+
assert(inferred.contains(df.getOWLSubAnnotationPropertyOfAxiom(annProp04, annProp01)))
158+
assert(inferred.contains(df.getOWLSubAnnotationPropertyOfAxiom(annProp04, annProp02)))
159+
}
97160
}

0 commit comments

Comments
 (0)