From afe0128a89a1d92fac8056bc356ba1dea8122925 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Thu, 5 Nov 2020 20:33:13 +0000 Subject: Update tests to RDFox v4.0 --- src/main/scala/rsacomb/FilteringProgram.scala | 45 ++++++++++++++------------- src/main/scala/rsacomb/Main.scala | 3 +- 2 files changed, 24 insertions(+), 24 deletions(-) (limited to 'src/main/scala') diff --git a/src/main/scala/rsacomb/FilteringProgram.scala b/src/main/scala/rsacomb/FilteringProgram.scala index dc5e95e..b0d4aab 100644 --- a/src/main/scala/rsacomb/FilteringProgram.scala +++ b/src/main/scala/rsacomb/FilteringProgram.scala @@ -32,8 +32,29 @@ class FilteringProgram(query: SelectQuery, constants: List[Term]) /* Makes mplicit conversion OWLAPI IRI <-> RDFox IRI available */ import RDFoxUtil._ - val answer: List[Term] = query.getSelection.asScala.map(_.getVariable).toList - val bounded: List[Term] = this.getBoundedVariables + lazy val variables = { + query.getQueryBody.getWherePattern match { + case b: ConjunctionPattern => { + b.getConjuncts.asScala.toSet.flatMap { conj: QueryPattern => + conj match { + case c: TriplePattern => + Set(c.getSubject, c.getPredicate, c.getObject) + .filter(_.isInstanceOf[Variable]) + case _ => Set() + } + } + } + case _ => Set() + } + }.toList + + val answer: List[Term] = + if (query.getAllPossibleVariables) { + variables + } else { + query.getSelection.asScala.map(_.getVariable).toList + } + val bounded: List[Term] = this.variables.filterNot(answer.contains(_)) val facts: List[TupleTableAtom] = constants.map(named) val rules: List[Rule] = this.generateFilteringProgram().map(reifyRule) @@ -45,26 +66,6 @@ class FilteringProgram(query: SelectQuery, constants: List[Term]) RSA.internal("NAMED") ) - private def getBoundedVariables: List[Term] = { - def extract(body: GroupGraphPattern): Set[Term] = { - body match { - case b: ConjunctionPattern => { - b.getConjuncts.asScala.toSet.flatMap { conj: QueryPattern => - conj match { - case c: TriplePattern => - Set(c.getSubject, c.getPredicate, c.getObject).filter( - _.isInstanceOf[Variable] - ) - case _ => Set() - } - } - } - case _ => Set() - } - } - extract(query.getQueryBody.getWherePattern).toList - } - /* NOTE: we are restricting to queries that contain conjunctions of * atoms for the time being. This might need to be reviewed in the * future. diff --git a/src/main/scala/rsacomb/Main.scala b/src/main/scala/rsacomb/Main.scala index 5d92061..830f1e0 100644 --- a/src/main/scala/rsacomb/Main.scala +++ b/src/main/scala/rsacomb/Main.scala @@ -62,8 +62,7 @@ object RSAComb extends App { "SELECT ?X WHERE {?X ?Y ?Z}" ) - /* Compute the filtering program from the given query */ - val filter = ontology.filteringProgram(query) + val filter = query map { q => ontology.filteringProgram(q) } /* ... */ } -- cgit v1.2.3