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
|
package rsacomb.util
/* Java imports */
import java.util.Map
import tech.oxfordsemantic.jrdfox.formats.SPARQLParser
import tech.oxfordsemantic.jrdfox.Prefixes
import tech.oxfordsemantic.jrdfox.logic.datalog.{
TupleTableAtom,
TupleTableName,
Negation
}
import tech.oxfordsemantic.jrdfox.logic.expression.{Term, Variable, IRI}
import org.semanticweb.owlapi.model.OWLOntology
import org.semanticweb.owlapi.model.{
OWLAxiom,
OWLClass,
OWLObjectPropertyExpression
}
import rsacomb.suffix.RSASuffix
// Debug only
import scala.collection.JavaConverters._
object RSA {
val Prefixes: Prefixes = new Prefixes()
Prefixes.declarePrefix("rsa:", "http://www.cs.ox.ac.uk/isg/rsa/")
private def atom(name: IRI, vars: List[Term]) =
TupleTableAtom.create(TupleTableName.create(name.getIRI), vars: _*)
def PE(t1: Term, t2: Term) =
TupleTableAtom.rdf(t1, RSA("PE"), t2)
def U(t: Term) =
TupleTableAtom.rdf(t, IRI.RDF_TYPE, RSA("U"))
def In(t: Term)(implicit set: Term) =
TupleTableAtom.rdf(t, RSA("In"), set)
def notIn(t: Term)(implicit set: Term) = Negation.create(In(t)(set))
def EquivTo(t1: Term, t2: Term) =
TupleTableAtom.rdf(t1, RSA("EquivTo"), t2)
def QM(implicit variables: (List[Term], List[Term])) = {
val (answer, bounded) = variables
atom(RSA("QM"), answer ::: bounded)
}
def ID(t1: Term, t2: Term)(implicit variables: (List[Term], List[Term])) = {
val (answer, bounded) = variables
atom(RSA("ID"), (answer ::: bounded) :+ t1 :+ t2)
}
def Named(t: Term) =
TupleTableAtom.rdf(t, IRI.RDF_TYPE, RSA("Named"))
def Thing(t: Term) =
TupleTableAtom.rdf(t, IRI.RDF_TYPE, IRI.THING)
def NI(t: Term) =
TupleTableAtom.rdf(t, IRI.RDF_TYPE, RSA("NI"))
def TQ(t1: Term, t2: Term, sx: RSASuffix)(implicit
variables: (List[Term], List[Term])
) = {
val (answer, bounded) = variables
atom(RSA("TQ" :: sx), (answer ::: bounded) :+ t1 :+ t2)
}
def AQ(t1: Term, t2: Term, sx: RSASuffix)(implicit
variables: (List[Term], List[Term])
) = {
val (answer, bounded) = variables
atom(RSA("AQ" :: sx), (answer ::: bounded) :+ t1 :+ t2)
}
def FK(implicit variables: (List[Term], List[Term])) = {
val (answer, bounded) = variables
atom(RSA("FK"), answer ::: bounded)
}
def SP(implicit variables: (List[Term], List[Term])) = {
val (answer, bounded) = variables
atom(RSA("SP"), answer ::: bounded)
}
def Ans(implicit variables: (List[Term], List[Term])) = {
val (answer, _) = variables
atom(RSA("Ans"), answer)
}
def apply(name: Any): IRI =
IRI.create(
Prefixes.getPrefixIRIsByPrefixName.get("rsa:").getIRI + name.toString
)
}
|