From b241f9b23b225dec5ffc3f8ddd6c81771091f599 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Mon, 7 Dec 2020 18:08:33 +0000 Subject: Add diagnostics for (un)filtered answer ratio --- src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 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 60511af..6891c8c 100644 --- a/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala +++ b/src/main/scala/uk/ac/ox/cs/rsacomb/Main.scala @@ -57,13 +57,29 @@ object RSAComb extends App { Logger print "Ontology is RSA!" /** Read SPARQL query from file */ - val query = RDFoxUtil.loadQueryFromFile(queryPath.getAbsoluteFile) - - /* Compute answers to query */ - ConjunctiveQuery.parse(query).map(ontology ask _) match { - case Some(answers) => Logger print answers + val strQuery = RDFoxUtil.loadQueryFromFile(queryPath.getAbsoluteFile) + val query = ConjunctiveQuery parse strQuery + + query match { + case Some(query) => { + val answers = ontology ask query + Logger.print(s"$answers", Logger.QUIET) + Logger print s"Number of answer: ${answers.length}" + + val unfiltered = ontology askUnfiltered query + val percentage = unfiltered match { + case Some(u) => + if (u.length > 0) (1 - answers.length / u.length) * 100 else 0 + case None => 0 + } + Logger.print( + s"Percentage of spurious answers: $percentage%", + Logger.DEBUG + ) + } case None => throw new RuntimeException("Submitted query is not conjunctive") } + } } -- cgit v1.2.3