From 5f9815c3f67114645593840a8648bffb1207b8d0 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Mon, 31 May 2021 16:58:15 +0100 Subject: Multiple fixes --- src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala') 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 74084af..a807f75 100644 --- a/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala +++ b/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala @@ -108,10 +108,10 @@ object RSAComb extends App { val ontology = RSAOntology( config('ontology).get[File], - config('data).get[List[File]]: _* + config('data).get[List[File]], + None ) val rsa = ontology.toRSA() - ontology.statistics() if (config contains 'query) { val query = -- cgit v1.2.3 From 6b4226c41ec2a2439fb44a312ccaff01769e8212 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Tue, 1 Jun 2021 11:20:39 +0100 Subject: Fix minor compilation errors --- src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala') 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 a807f75..f2d1a5d 100644 --- a/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala +++ b/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala @@ -106,12 +106,11 @@ object RSAComb extends App { /* Command-line options */ val config = RSAConfig.parse(args.toList) - val ontology = RSAOntology( + val rsa = RSAOntology( config('ontology).get[File], config('data).get[List[File]], None ) - val rsa = ontology.toRSA() if (config contains 'query) { val query = -- cgit v1.2.3 From 53646646f924887768688794aee46874ed194673 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Tue, 20 Jul 2021 15:09:20 +0100 Subject: Generalize dependency graph generation The code to generate the dependency graph has been moved in the companion object of the generic OWL 2 ontology wrapper Ontology. This signals that we could potentially build a dependency graph for any ontology (and not only RSA ontology). Moreover, a dependency graph can be build for an Ontology object or an arbitrary TBox and Abox. --- src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala') 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 b749401..82da9df 100644 --- a/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala +++ b/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala @@ -103,6 +103,16 @@ object RSAConfig { /** Main entry point to the program */ object RSAComb extends App { + /* + * TODO: Aiming for this workflow: + * + * implicit val manager = new Manager(...) + * val original = manager.importFromFile("ontology.owl") + * val axioms = original.getAxioms.filter(isLogicalAxiom).normalize(normalizer) + * val ontology = new Ontology(axioms, data) + * val rsa = ontology.toRSA(approximator) + */ + /* Command-line options */ val config = RSAConfig.parse(args.toList) -- cgit v1.2.3 From cb8572606f8951213bcfe9e6667caa208ad3d189 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Thu, 22 Jul 2021 09:59:07 +0100 Subject: Review main workflow --- src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala') 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 82da9df..8e5169d 100644 --- a/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala +++ b/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala @@ -10,6 +10,10 @@ import tech.oxfordsemantic.jrdfox.logic.sparql.statement.SelectQuery import util.{Logger, RDFoxUtil, RSA} import sparql.ConjunctiveQuery +import uk.ac.ox.cs.rsacomb.ontology.Ontology +import uk.ac.ox.cs.rsacomb.converter.Normalizer +import uk.ac.ox.cs.rsacomb.approximation.LowerBound + case class RSAOption[+T](opt: T) { def get[T]: T = opt.asInstanceOf[T] } @@ -103,24 +107,18 @@ object RSAConfig { /** Main entry point to the program */ object RSAComb extends App { - /* - * TODO: Aiming for this workflow: - * - * implicit val manager = new Manager(...) - * val original = manager.importFromFile("ontology.owl") - * val axioms = original.getAxioms.filter(isLogicalAxiom).normalize(normalizer) - * val ontology = new Ontology(axioms, data) - * val rsa = ontology.toRSA(approximator) - */ - /* Command-line options */ val config = RSAConfig.parse(args.toList) - val rsa = RSAOntology( + /* Load original ontology and normalize it */ + val ontology = Ontology( config('ontology).get[File], - config('data).get[List[File]], - None - ) + config('data).get[List[File]] + ).normalize(new Normalizer) + + /* Approximate the ontology to RSA */ + val toRSA = new LowerBound + val rsa = ontology approximate toRSA if (config contains 'query) { val query = -- cgit v1.2.3 From 7d619706551117a485d93d0d6847a25afa6a359d Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Tue, 27 Jul 2021 10:30:07 +0100 Subject: Rework class structure to match more general workflow The major change is the introduction of a new class Ontology (superclass of RSAOntology) that contains all those operation that we would like to perform on *any* OWL 2 ontology. Approximation is also generic on the return type, allowing for example intermediate steps (or chaining of approximations). --- src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala') 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 8e5169d..713a9e8 100644 --- a/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala +++ b/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala @@ -131,18 +131,18 @@ object RSAComb extends App { Logger.print(s"$answers", Logger.VERBOSE) Logger print s"Number of answers: ${answers.length} (${answers.lengthWithMultiplicity})" // Retrieve unfiltered answers - val unfiltered = rsa.queryDataStore( - """ - SELECT (count(?K) as ?COUNT) - WHERE { - ?K a rsa:QM . - } - """, - RSA.Prefixes - ) - unfiltered.foreach((u) => - Logger print s"Number of unfiltered answers: ${u.head._2}" - ) + // val unfiltered = rsa.queryDataStore( + // """ + // SELECT (count(?K) as ?COUNT) + // WHERE { + // ?K a rsa:QM . + // } + // """, + // RSA.Prefixes + // ) + // unfiltered.foreach((u) => + // Logger print s"Number of unfiltered answers: ${u.head._2}" + // ) } case None => throw new RuntimeException("Submitted query is not conjunctive") -- cgit v1.2.3