From 099cad0129edb9822cc6ccb044b2109834715bb9 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Wed, 23 Sep 2020 19:59:06 +0200 Subject: Add method to parse a string into a Query This is using `SPARQLParser`, an undocumented class provided by JRDFox --- src/main/scala/rsacomb/Main.scala | 4 +++- src/main/scala/rsacomb/RDFoxUtil.scala | 13 ++++++++++++- src/main/scala/rsacomb/RSA.scala | 13 +------------ 3 files changed, 16 insertions(+), 14 deletions(-) (limited to 'src/main/scala/rsacomb') diff --git a/src/main/scala/rsacomb/Main.scala b/src/main/scala/rsacomb/Main.scala index 35c682e..c6bd6a1 100644 --- a/src/main/scala/rsacomb/Main.scala +++ b/src/main/scala/rsacomb/Main.scala @@ -53,7 +53,9 @@ object RSAComb extends App { //val tboxCanon = rsa.canonicalModel() /* Load query */ - val query = RSA.test_query + val query = RDFoxUtil.parseQuery( + "SELECT ?X WHERE {?X ?Y ?Z}" + ) /* Compute the filtering program from the given query */ val filter = ontology.filteringProgram(query) diff --git a/src/main/scala/rsacomb/RDFoxUtil.scala b/src/main/scala/rsacomb/RDFoxUtil.scala index d5a4dbb..b523d4e 100644 --- a/src/main/scala/rsacomb/RDFoxUtil.scala +++ b/src/main/scala/rsacomb/RDFoxUtil.scala @@ -2,13 +2,16 @@ package rsacomb /* Java imports */ import java.util.HashMap +import java.io.ByteArrayInputStream import tech.oxfordsemantic.jrdfox.Prefixes -import tech.oxfordsemantic.jrdfox.logic.IRI +import tech.oxfordsemantic.jrdfox.logic.{IRI, Query} import tech.oxfordsemantic.jrdfox.client.{ ConnectionFactory, ServerConnection, DataStoreConnection } +import tech.oxfordsemantic.jrdfox.formats.SPARQLParser + object RDFoxUtil { implicit def owlapi2rdfox(iri: org.semanticweb.owlapi.model.IRI): IRI = { @@ -41,6 +44,14 @@ object RDFoxUtil { (server, data) } + def parseQuery(query: String): Query = { + val parser = new SPARQLParser( + RSA.Prefixes, + new ByteArrayInputStream(query.getBytes()) + ) + parser.parseSingleQuery() + } + def submitQuery( data: DataStoreConnection, prefixes: Prefixes, diff --git a/src/main/scala/rsacomb/RSA.scala b/src/main/scala/rsacomb/RSA.scala index 9125f9f..edabc6a 100644 --- a/src/main/scala/rsacomb/RSA.scala +++ b/src/main/scala/rsacomb/RSA.scala @@ -4,6 +4,7 @@ package rsacomb import java.io.File import java.util.Map +import tech.oxfordsemantic.jrdfox.formats.SPARQLParser import tech.oxfordsemantic.jrdfox.Prefixes import tech.oxfordsemantic.jrdfox.logic.IRI import org.semanticweb.owlapi.apibinding.OWLManager @@ -38,18 +39,6 @@ object RSA extends RSAOntology { Variable.create(f"I$counter%03d") } - val varX = Variable.create("X") - val varY = Variable.create("Y") - val varZ = Variable.create("Z") - val testAnswerVars = List[Variable](varX, varY, varZ).asJava; - val testFormula: Formula = - Conjunction.create( - Atom.rdf(varX, IRI.TOP_OBJECT_PROPERTY, varY), - Atom.rdf(varY, IRI.TOP_OBJECT_PROPERTY, varZ) - ) - val test_query = - Query.create(QueryType.SELECT, false, testAnswerVars, testFormula) - def internal(name: Any): IRI = IRI.create( Prefixes.getPrefixIRIsByPrefixName.get("internal:").getIRI -- cgit v1.2.3