aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/rsacomb/Main.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/rsacomb/Main.scala')
-rw-r--r--src/main/scala/rsacomb/Main.scala54
1 files changed, 45 insertions, 9 deletions
diff --git a/src/main/scala/rsacomb/Main.scala b/src/main/scala/rsacomb/Main.scala
index 39040fc..596ef33 100644
--- a/src/main/scala/rsacomb/Main.scala
+++ b/src/main/scala/rsacomb/Main.scala
@@ -7,6 +7,7 @@ import scala.collection.JavaConverters._
7 7
8import tech.oxfordsemantic.jrdfox.client.UpdateType 8import tech.oxfordsemantic.jrdfox.client.UpdateType
9import tech.oxfordsemantic.jrdfox.logic.sparql.statement.SelectQuery 9import tech.oxfordsemantic.jrdfox.logic.sparql.statement.SelectQuery
10import tech.oxfordsemantic.jrdfox.logic.expression.{IRI, Term}
10 11
11/* Local imports */ 12/* Local imports */
12import rsacomb.RSA._ 13import rsacomb.RSA._
@@ -73,23 +74,50 @@ object RSAComb extends App {
73 // Open connection to RDFox 74 // Open connection to RDFox
74 val (server, data) = RDFoxUtil.openConnection("AnswerComputation") 75 val (server, data) = RDFoxUtil.openConnection("AnswerComputation")
75 76
76 // Gather canonical model and filtering rules 77 {
78 println("\nQuery")
79 println(query)
80 }
81
82 // Step 1. Computing the canonical model
77 val canon = ontology.canonicalModel 83 val canon = ontology.canonicalModel
78 val filter = ontology.filteringProgram(query) 84 data.addRules(canon.rules.asJava)
79 85
80 { 86 {
81 println("\nCanonical Model rules:") 87 println("\nCanonical Model rules:")
82 canon.rules.foreach(println) 88 canon.rules.foreach(println)
83 println("\nFiltering rules")
84 filter.rules.foreach(println)
85 println("\nQuery")
86 println(query)
87 } 89 }
88 90
89 // Add canonical model and filtering rules 91 // Step 2. Computing the canonical model
90 data.addRules(canon.rules.asJava) 92 val nis = {
93 val query =
94 "SELECT ?Y WHERE { ?X internal:EquivTo ?Y ; a internal:NAMED . }"
95 val cursor =
96 data.createCursor(
97 RSA.Prefixes,
98 query,
99 new HashMap[String, String]()
100 );
101 var mul = cursor.open()
102 var iris: List[IRI] = List()
103 while (mul > 0) {
104 println(cursor.getResource(0))
105 iris = cursor.getResource(0) match {
106 case iri: IRI => iri :: iris
107 case _ => iris
108 }
109 mul = cursor.advance()
110 }
111 iris
112 }
113 val filter = ontology.filteringProgram(query, nis)
91 data.addRules(filter.rules.asJava) 114 data.addRules(filter.rules.asJava)
92 115
116 {
117 println("\nFiltering rules")
118 filter.rules.foreach(println)
119 }
120
93 def retrieveInstances(pred: String, arity: Int): Unit = { 121 def retrieveInstances(pred: String, arity: Int): Unit = {
94 // Build query 122 // Build query
95 var query = "SELECT" 123 var query = "SELECT"
@@ -127,6 +155,14 @@ object RSAComb extends App {
127 1 155 1
128 ) 156 )
129 157
158 println("\nNAMEDs:")
159 RDFoxUtil.submitQuery(
160 data,
161 RSA.Prefixes,
162 "SELECT ?X { ?X a internal:NAMED }",
163 1
164 )
165
130 println("\nNIs:") 166 println("\nNIs:")
131 RDFoxUtil.submitQuery( 167 RDFoxUtil.submitQuery(
132 data, 168 data,
@@ -143,7 +179,7 @@ object RSAComb extends App {
143 RDFoxUtil.submitQuery( 179 RDFoxUtil.submitQuery(
144 data, 180 data,
145 RSA.Prefixes, 181 RSA.Prefixes,
146 "SELECT ?X ?Y { ?X owl:sameAs ?Y }", 182 "SELECT ?X ?Y { ?X internal:EquivTo ?Y }",
147 2 183 2
148 ) 184 )
149 185