From 0b640c3d13c65a8b83ee4313827b5fc6a12e1936 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Thu, 11 Nov 2021 17:32:13 +0000 Subject: Add support for directory of query files --- src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala | 6 ++---- src/main/scala/uk/ac/ox/cs/rsacomb/RSAConfig.scala | 11 ++++++++--- .../scala/uk/ac/ox/cs/rsacomb/util/RDFoxUtil.scala | 18 +++++++++++++++++- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala b/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala index cbec9ec..3aa81a7 100644 --- a/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala +++ b/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala @@ -50,16 +50,14 @@ object RSAComb extends App { val data = config('data).get[List[os.Path]] val ontology = Ontology(ontopath, data).normalize(new Normalizer) - //ontology.axioms foreach println - /* Approximate the ontology to RSA */ val toRSA = config('approximation).get[Approximation[RSAOntology]] val rsa = ontology approximate toRSA if (config contains 'queries) { val queries = - RDFoxUtil.loadQueriesFromFile( - config('queries).get[os.Path] + RDFoxUtil.loadQueriesFromFiles( + config('queries).get[List[os.Path]] ) val answers = rsa ask queries diff --git a/src/main/scala/uk/ac/ox/cs/rsacomb/RSAConfig.scala b/src/main/scala/uk/ac/ox/cs/rsacomb/RSAConfig.scala index 3e92d81..1a4afd7 100644 --- a/src/main/scala/uk/ac/ox/cs/rsacomb/RSAConfig.scala +++ b/src/main/scala/uk/ac/ox/cs/rsacomb/RSAConfig.scala @@ -126,9 +126,14 @@ object RSAConfig { } case flag @ ("-q" | "--queries") :: _query :: tail => { val query = getPath(_query) - if (!os.isFile(query)) - exit(s"'${_query}' is not a valid filename.") - parse(tail, config += ('queries -> query)) + val files = + if (os.isFile(query)) + Seq(query) + else if (os.isDir(query)) + os.walk(query).filter(os.isFile) + else + exit(s"'${_query}' is not a valid path.") + parse(tail, config += ('queries -> files)) } case flag @ ("-o" | "--ontology") :: _ontology :: tail => { val ontology = getPath(_ontology) diff --git a/src/main/scala/uk/ac/ox/cs/rsacomb/util/RDFoxUtil.scala b/src/main/scala/uk/ac/ox/cs/rsacomb/util/RDFoxUtil.scala index d4e55d8..4153fac 100644 --- a/src/main/scala/uk/ac/ox/cs/rsacomb/util/RDFoxUtil.scala +++ b/src/main/scala/uk/ac/ox/cs/rsacomb/util/RDFoxUtil.scala @@ -250,7 +250,7 @@ object RDFoxUtil { * @note if a query is not recognized as a [[SelectQuery]] by RDFox * it is discarded. * - * @param file file containing a list of conjunctive queries. + * @param path file containing a list of conjunctive queries. * @param prefixes additional prefixes for the query. It defaults to * an empty set. * @@ -285,6 +285,22 @@ object RDFoxUtil { queries } + /** Load SPARQL queries from files. + * + * @param paths list of files containing a conjunctive queries. + * @param prefixes additional prefixes for the query. It defaults to + * an empty set. + * + * @return a list of [[tech.oxfordsemantic.jrdfox.logic.sparql.statement.SelectQuery SelectQuery]] queries. + * + * @see [[RDFoxUtil.loadQueriesFromFile()]] for more details on the file format. + */ + def loadQueriesFromFiles( + paths: List[os.Path], + prefixes: Prefixes = new Prefixes() + ): List[ConjunctiveQuery] = + paths.flatMap(loadQueriesFromFile(_, prefixes)) + /** Parse a SELECT query from a string in SPARQL format. * * @param query the string containing the SPARQL query -- cgit v1.2.3