Skip to content

Commit 9b684fe

Browse files
Merge pull request #55 from sievericcardo/boolean-fix
Fixed handling of Boolean type when constructing from SPARQL query
2 parents 3f09377 + 15aac8d commit 9b684fe

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

src/main/kotlin/no/uio/microobject/ast/stmt/AccessStmt.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package no.uio.microobject.ast.stmt
22

33
import com.sksamuel.hoplite.ConfigLoader
44
import no.uio.microobject.ast.*
5+
import no.uio.microobject.ast.expr.FALSEEXPR
56
import no.uio.microobject.ast.expr.LiteralExpr
7+
import no.uio.microobject.ast.expr.TRUEEXPR
68
import no.uio.microobject.runtime.*
79
import no.uio.microobject.type.*
810
import org.apache.jena.datatypes.xsd.XSDDatatype
@@ -80,12 +82,12 @@ data class AccessStmt(val target : Location, val query: Expression, val params :
8082
else if(objNameCand.matches("\\d+".toRegex()) || objNameCand.matches("\\d+\\^\\^http://www.w3.org/2001/XMLSchema#integer".toRegex()))
8183
newMemory["content"] = LiteralExpr(found.split("^^")[0], INTTYPE)
8284
else if (objNameCand.matches("\\d+".toRegex()) || objNameCand.matches("\\d+\\^\\^http://www.w3.org/2001/XMLSchema#int".toRegex()))
83-
LiteralExpr(found.split("^^")[0], INTTYPE)
85+
newMemory["content"] = LiteralExpr(found.split("^^")[0], INTTYPE)
8486
else if(objNameCand.matches("\\d+.\\d+".toRegex())) newMemory["content"] =
8587
LiteralExpr(found, DOUBLETYPE)
86-
else if (objNameCand == "true" || objNameCand == "false") LiteralExpr(found, BOOLEANTYPE)
87-
else if (objNameCand.matches("(true|false)".toRegex()) || objNameCand.matches("(true|false)\\^\\^http://www.w3.org/2001/XMLSchema#boolean".toRegex()))
88-
LiteralExpr(found.split("^^")[0], BOOLEANTYPE)
88+
else if (objNameCand.matches("(true|false)".toRegex()) || objNameCand.matches("(true|false)\\^\\^http://www.w3.org/2001/XMLSchema#boolean".toRegex())) {
89+
newMemory["content"] = if (objNameCand.split("^^")[0] == "true") TRUEEXPR else FALSEEXPR
90+
}
8991
else throw Exception("Query returned unknown object/literal: $found")
9092
}
9193
newMemory["next"] = list

src/main/kotlin/no/uio/microobject/ast/stmt/ConstructStmt.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package no.uio.microobject.ast.stmt
22

33
import no.uio.microobject.ast.*
4+
import no.uio.microobject.ast.expr.FALSEEXPR
45
import no.uio.microobject.ast.expr.LiteralExpr
56
import no.uio.microobject.ast.expr.TRUEEXPR
67
import no.uio.microobject.runtime.EvalResult
@@ -69,12 +70,12 @@ data class ConstructStmt(val target : Location, val query: Expression, val param
6970
newObjMemory[f.name] = LiteralExpr(extractedName.split("^^")[0], DOUBLETYPE)
7071
else if (r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix) == "true" ||
7172
r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix) == "false") {
72-
LiteralExpr(r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix), BOOLEANTYPE)
73+
// LiteralExpr(r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix), BOOLEANTYPE)
74+
newObjMemory[f.name] = if (r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix) == "true") TRUEEXPR else FALSEEXPR
7375
} else if (r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix)
74-
.matches("(true|false)".toRegex()) ||
75-
r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix)
76-
.matches("(true|false)\\^\\^http://www.w3.org/2001/XMLSchema#boolean".toRegex())) {
77-
LiteralExpr(r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix).split("^^")[0], BOOLEANTYPE)
76+
.matches("(true|false)\\^\\^http://www.w3.org/2001/XMLSchema#boolean".toRegex())
77+
|| extractedName.matches("(true|false)\\^\\^http://www.w3.org/2001/XMLSchema#boolean".toRegex())) {
78+
newObjMemory[f.name] = if (extractedName.split("^^")[0] == "true") TRUEEXPR else FALSEEXPR
7879
}
7980
else if(f.type == STRINGTYPE)
8081
newObjMemory[f.name] = LiteralExpr("\""+extractedName+"\"", f.type)

0 commit comments

Comments
 (0)