From 17bd9beaf7f358a44e5bf36a5855fe6727d506dc Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Tue, 10 May 2022 18:17:06 +0100 Subject: [pagoda] Move project to Scala This commit includes a few changes: - The repository still uses Maven to manage dependency but it is now a Scala project. - The code has been ported from OWLAPI 3.4.10 to 5.1.20 - A proof of concept program using both RSAComb and PAGOdA has been added. --- .../semanticweb/karma2/model/ConjunctiveQuery.java | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/main/java/org/semanticweb/karma2/model/ConjunctiveQuery.java (limited to 'src/main/java/org/semanticweb/karma2/model/ConjunctiveQuery.java') diff --git a/src/main/java/org/semanticweb/karma2/model/ConjunctiveQuery.java b/src/main/java/org/semanticweb/karma2/model/ConjunctiveQuery.java new file mode 100644 index 0000000..17f3169 --- /dev/null +++ b/src/main/java/org/semanticweb/karma2/model/ConjunctiveQuery.java @@ -0,0 +1,80 @@ +package org.semanticweb.karma2.model; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Map; + +import org.semanticweb.HermiT.model.Atom; +import org.semanticweb.HermiT.model.Term; +import org.semanticweb.karma2.exception.IllegalInputQueryException; +import org.semanticweb.karma2.model.cqparser.ConjunctiveQueryParser; + +import uk.ac.ox.cs.JRDFox.Prefixes; + + +public class ConjunctiveQuery { + + + protected final Atom[] m_queryAtoms; + protected final Term[] m_answerTerms; + protected final Term[] m_resultBuffer; + protected Prefixes prefixes; + + public ConjunctiveQuery(Atom[] queryAtoms,Term[] answerTerms) { + m_queryAtoms=queryAtoms; + m_answerTerms=answerTerms; + m_resultBuffer=answerTerms.clone(); + prefixes = new Prefixes(); + } + + + public Prefixes getPrefixes() { + return this.prefixes; + } + + public ConjunctiveQuery(Atom[] queryAtoms,Term[] answerTerms, Prefixes prefixes) { + m_queryAtoms=queryAtoms; + m_answerTerms=answerTerms; + m_resultBuffer=answerTerms.clone(); + this.prefixes = prefixes; + } + + public int getNumberOfQueryAtoms() { + return m_queryAtoms.length; + } + public Atom getQueryAtom(int atomIndex) { + return m_queryAtoms[atomIndex]; + } + public int getNumberOfAnswerTerms() { + return m_answerTerms.length; + } + public Term getAnswerTerm(int termIndex) { + return m_answerTerms[termIndex]; + } + + + public String toString() { + String res = ""; + Map iriMap = prefixes.getPrefixIRIsByPrefixName(); + for (String shortIri: iriMap.keySet()) + res += "prefix " + shortIri + " <" + iriMap.get(shortIri) + ">\n"; + res += "prefix rdf: \n"; + res += "select "; + for (Term t: m_answerTerms) + res+= " " + t + " "; + res += " WHERE { "; + for (Atom a : m_queryAtoms){ + if (a.getArity() == 1) + res+= a.getArgument(0) + " rdf:type " + a.getDLPredicate().toString().replace('<', ' ').replace('>', ' ') + " . "; + if (a.getArity() == 2) + res+= a.getArgument(0) + " " + a.getDLPredicate().toString().replace('<', ' ').replace('>', ' ') + " " + a.getArgument(1) + " . "; + } + return res + "}"; + + } + + + public static ConjunctiveQuery parse(String query) throws FileNotFoundException, IllegalInputQueryException, IOException { + return (new ConjunctiveQueryParser(query)).parse(); + } +} \ No newline at end of file -- cgit v1.2.3