blob: 08ff283918ea2aa9eb84d86e8e23e9c712bd4cf0 (
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
103
104
105
|
package uk.ac.ox.cs.rsacomb.functional
import org.scalatest.funspec.AnyFunSpec
import org.scalatest.matchers.should.Matchers
import org.scalatest.tagobjects.Slow
import uk.ac.ox.cs.rsacomb.ontology.Ontology
import uk.ac.ox.cs.rsacomb.approximation.Upperbound
import uk.ac.ox.cs.rsacomb.converter.Normalizer
import uk.ac.ox.cs.rsacomb.util.{Logger, RDFoxUtil}
class LUBM extends AnyFunSpec with Matchers {
Logger.level = Logger.QUIET
private val test = os.pwd / "tests" / "lubm"
/* Approximation algorithms */
//private val toLowerbound = new Lowerbound
private val toUpperbound = new Upperbound
/* Normalization algorithms */
private val normalizer = new Normalizer
/* Ontology */
private val ontology = Ontology(
test / "univ-bench.owl",
List(test / "data" / "lubm1.ttl")
) normalize normalizer
private val rsa = ontology approximate toUpperbound
/* Queries and results */
private val results = ujson.read(os.read(test / "results.json")).arr
describe("Ontology size: 1)") {
val queries = RDFoxUtil.loadQueriesFromFile(test / "queries.sparql")
queries foreach { query =>
it(s"Tested Query${query.id}") {
val answers = rsa.ask(query).answers.map(_._2.mkString("\t"))
val reference = results
.find(_("queryID").num == query.id)
.get("answers")
.arr
.map(_.str)
answers should contain theSameElementsAs reference
}
}
val slow = RDFoxUtil.loadQueriesFromFile(test / "queries-slow.sparql")
slow foreach { query =>
it(s"Tested Query${query.id}", Slow) {
val answers = rsa.ask(query).answers.map(_._2.mkString("\t"))
val reference = results
.find(_("queryID").num == query.id)
.get("answers")
.arr
.map(_.str)
answers should contain theSameElementsAs reference
}
}
}
}
class DBpedia extends AnyFunSpec with Matchers {
Logger.level = Logger.QUIET
private val test = os.pwd / "tests" / "dbpedia"
/* Approximation algorithms */
//private val toLowerbound = new Lowerbound
private val toUpperbound = new Upperbound
/* Normalization algorithms */
private val normalizer = new Normalizer
/* Ontology */
private val ontology = Ontology(
test / "dbpedia+travel.owl",
List(test / "dbpedia+travel.ttl")
) normalize normalizer
private val rsa = ontology approximate toUpperbound
/* Queries and results */
private val results = ujson.read(os.read(test / "results.json")).arr
describe("Full DBpedia + Travel data:") {
val queries = RDFoxUtil.loadQueriesFromFile(test / "queries.sparql")
queries foreach { query =>
it(s"Tested Query${query.id}") {
val answers = rsa.ask(query).answers.map(_._2.mkString("\t"))
val reference = results
.find(_("queryID").num == query.id)
.get("answers")
.arr
.map(_.str)
answers should contain theSameElementsAs reference
}
}
}
}
|