From 32fe8f94255b913c570275043a3c056eaa4ec07b Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Wed, 11 May 2022 12:35:56 +0100 Subject: Implement stub for query answering procedure --- src/main/scala/uk/ac/ox/cs/acqua/Main.scala | 82 ++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 19 deletions(-) (limited to 'src/main/scala/uk/ac/ox/cs/acqua/Main.scala') diff --git a/src/main/scala/uk/ac/ox/cs/acqua/Main.scala b/src/main/scala/uk/ac/ox/cs/acqua/Main.scala index 749a492..e8cfeb7 100644 --- a/src/main/scala/uk/ac/ox/cs/acqua/Main.scala +++ b/src/main/scala/uk/ac/ox/cs/acqua/Main.scala @@ -1,16 +1,41 @@ +/* + * Copyright 2021,2022 KRR Oxford + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package uk.ac.ox.cs.acqua +import uk.ac.ox.cs.rsacomb.converter.Normalizer import uk.ac.ox.cs.rsacomb.ontology.Ontology +import uk.ac.ox.cs.rsacomb.util.{RDFoxUtil,RSA} import uk.ac.ox.cs.pagoda.owl.OWLHelper -import uk.ac.ox.cs.pagoda.reasoner.{ELHOQueryReasoner,QueryReasoner,RLQueryReasoner} -// import uk.ac.ox.cs.pagoda.Pagoda -// import uk.ac.ox.cs.pagoda.util.PagodaProperties; +import uk.ac.ox.cs.pagoda.reasoner.{ELHOQueryReasoner,MyQueryReasoner,QueryReasoner,RLQueryReasoner} +import uk.ac.ox.cs.pagoda.util.PagodaProperties; +import uk.ac.ox.cs.pagoda.util.Utility; + +import uk.ac.ox.cs.acqua.reasoner.RSAQueryReasoner +import uk.ac.ox.cs.acqua.util.AcquaConfig object Acqua extends App { + val config = AcquaConfig.parse(args.toList) + AcquaConfig describe config val ontopath = os.Path("tests/lubm/univ-bench.owl", base = os.pwd) - val ontology = Ontology(ontopath, List.empty) + val ontology = Ontology(ontopath, List.empty).normalize(new Normalizer) + + val properties = new PagodaProperties() val performMultiStages = true val considerEqualities = true @@ -20,22 +45,41 @@ object Acqua extends App { } else if (OWLHelper.isInELHO(ontology.origin)) { new ELHOQueryReasoner(); } else if (ontology.isRSA) { - // Use combined approach for RSA - ??? + new RSAQueryReasoner(ontology) } else { - new MyQueryReasoner(performMultiStages, considerEqualities); + // Return ACQuA reasoner + // new MyQueryReasoner(performMultiStages, considerEqualities); + ??? + } + + /* Preprocessing */ + reasoner.setProperties(properties) + reasoner.loadOntology(ontology.origin) + reasoner.importData(properties.getDataPath()) + if (reasoner.preprocess()) { + Utility.logInfo("The ontology is consistent!"); + } + else { + Utility.logInfo("The ontology is inconsistent!"); + reasoner.dispose(); } - // else - // switch(type) { - // case RLU: - // reasoner = new RLUQueryReasoner(performMultiStages, considerEqualities); - // break; - // case ELHOU: - // reasoner = new ELHOUQueryReasoner(performMultiStages, considerEqualities); - // break; - // default: - // reasoner = new MyQueryReasoner(performMultiStages, considerEqualities); - // } - // return reasoner; + if (config contains 'queries) { + val queries = + RDFoxUtil.loadQueriesFromFiles( + config('queries).get[List[os.Path]], + RSA.Prefixes + ) + // for(String queryFile : properties.getQueryPath().split(";")) { + // Collection queryRecords = pagoda.getQueryManager().collectQueryRecords(queryFile); + // pagoda.evaluate(queryRecords); + } } + + + // /* Perform query answering */ + // val answers = rsa ask queries + + // /* Perform logging */ + // Logger write answers + // Logger.generateSimulationScripts(datapath, queries) -- cgit v1.2.3