diff --git a/uel-asp/src/main/java/de/tudresden/inf/lat/uel/asp/solver/AspInput.java b/uel-asp/src/main/java/de/tudresden/inf/lat/uel/asp/solver/AspInput.java index 2d9780d6..82da7072 100644 --- a/uel-asp/src/main/java/de/tudresden/inf/lat/uel/asp/solver/AspInput.java +++ b/uel-asp/src/main/java/de/tudresden/inf/lat/uel/asp/solver/AspInput.java @@ -8,7 +8,7 @@ import de.tudresden.inf.lat.uel.type.api.Equation; import de.tudresden.inf.lat.uel.type.api.Goal; import de.tudresden.inf.lat.uel.type.api.Subsumption; -import de.tudresden.inf.lat.uel.type.cons.KRSSKeyword; +import de.tudresden.inf.lat.uel.type.cons.RendererKeywords; import de.tudresden.inf.lat.uel.type.impl.ExistentialRestriction; /** @@ -62,7 +62,7 @@ private void updateProgram() { encoding.append("relevant(x"); encoding.append(var); encoding.append(")."); - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); } program = encoding.toString(); } @@ -70,20 +70,20 @@ private void updateProgram() { private void encodeDefinition(StringBuilder encoding, Definition d, int index) { encoding.append("%definition "); encoding.append(index); - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); // lhs encodePositiveAtom(encoding, d.getDefiniendum(), 0, index); // rhs for (Integer rightId : d.getRight()) { encodePositiveAtom(encoding, rightId, 1, index); } - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); } private void encodeEquation(StringBuilder encoding, Equation e, int index) { encoding.append("%equation "); encoding.append(index); - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); // lhs for (Integer leftId : e.getLeft()) { encodePositiveAtom(encoding, leftId, 0, index); @@ -92,13 +92,13 @@ private void encodeEquation(StringBuilder encoding, Equation e, int index) { for (Integer rightId : e.getRight()) { encodePositiveAtom(encoding, rightId, 1, index); } - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); } private void encodeSubsumption(StringBuilder encoding, Subsumption s, int index) { encoding.append("%subsumption "); encoding.append(index); - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); // lhs for (Integer leftId : s.getLeft()) { encodePositiveAtom(encoding, leftId, 0, index); @@ -108,13 +108,13 @@ private void encodeSubsumption(StringBuilder encoding, Subsumption s, int index) for (Integer rightId : s.getRight()) { encodePositiveAtom(encoding, rightId, 1, index); } - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); } private void encodeDisequation(StringBuilder encoding, Disequation e, int index) { encoding.append("%disequation "); encoding.append(index); - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); // lhs for (Integer leftId : e.getLeft()) { encodeNegativeAtom(encoding, leftId, 0, index); @@ -123,13 +123,13 @@ private void encodeDisequation(StringBuilder encoding, Disequation e, int index) for (Integer rightId : e.getRight()) { encodeNegativeAtom(encoding, rightId, 1, index); } - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); } private void encodeDissubsumption(StringBuilder encoding, Dissubsumption s, int index) { encoding.append("%disequation "); encoding.append(index); - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); // lhs for (Integer leftId : s.getLeft()) { encodeNegativeAtom(encoding, leftId, 0, index); @@ -138,11 +138,11 @@ private void encodeDissubsumption(StringBuilder encoding, Dissubsumption s, int for (Integer rightId : s.getRight()) { encodeNegativeAtom(encoding, rightId, 1, index); } - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); encoding.append("lefttoright("); encoding.append(index); encoding.append(")."); - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); } private void encodePositiveAtom(StringBuilder encoding, Integer atomId, int side, int equationId) { @@ -153,7 +153,7 @@ private void encodePositiveAtom(StringBuilder encoding, Integer atomId, int side encoding.append(", "); encoding.append(equationId); encoding.append(")."); - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); } private void encodeNegativeAtom(StringBuilder encoding, Integer atomId, int side, int disequationId) { @@ -164,7 +164,7 @@ private void encodeNegativeAtom(StringBuilder encoding, Integer atomId, int side encoding.append(", "); encoding.append(disequationId); encoding.append(")."); - encoding.append(KRSSKeyword.newLine); + encoding.append(RendererKeywords.newLine); } private void encodeAtom(StringBuilder encoding, Atom atom) { diff --git a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/main/AlternativeUelStarter.java b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/main/AlternativeUelStarter.java index 9666e809..7896f9a5 100644 --- a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/main/AlternativeUelStarter.java +++ b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/main/AlternativeUelStarter.java @@ -1,12 +1,12 @@ package de.tudresden.inf.lat.uel.core.main; -import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; -import java.io.FileReader; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; @@ -123,11 +123,10 @@ public static void main(String[] args) { } OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLDataFactory factory = manager.getOWLDataFactory(); AlternativeUelStarter starter = new AlternativeUelStarter(loadOntology(mainFilename, manager)); starter.setVerbose(printInfo); if (!owlThingAliasName.isEmpty()) { - starter.setOwlThingAlias(factory.getOWLClass(IRI.create(owlThingAliasName))); + starter.setOwlThingAlias(OWLManager.getOWLDataFactory().getOWLClass(IRI.create(owlThingAliasName))); } OWLOntology subsumptions = loadOntology(subsFilename, manager); @@ -138,7 +137,7 @@ public static void main(String[] args) { if (dissubsumptions == null) { return; } - Set variables = loadVariables(varFilename, factory); + Set variables = loadVariables(varFilename); if (variables == null) { return; } @@ -179,38 +178,35 @@ private static void printSyntax() { "Usage: uel [-s subsumptions.owl] [-d dissubsumptions.owl] [-v variables.txt] [-t owl:Thing_alias] [-a algorithmIndex] [-h] [-i] [ontology.owl]"); } - public static Set loadVariables(String filename, OWLDataFactory factory) { - if (filename.isEmpty()) { - return Collections.emptySet(); - } + static Set loadVariables(String filename) { try { + if (filename.isEmpty()) { + return Collections.emptySet(); + } - BufferedReader input = new BufferedReader(new FileReader(new File(filename))); + OWLDataFactory factory = OWLManager.getOWLDataFactory(); Set variables = new HashSet(); - String line = ""; - while (line != null) { - line = input.readLine(); - if ((line != null) && !line.isEmpty()) { + + for (String line : Files.readAllLines(Paths.get(filename))) { + if (!line.isEmpty()) { variables.add(factory.getOWLClass(IRI.create(line))); } } - input.close(); + return variables; - } catch (FileNotFoundException e) { - System.err.println("Could not find file '" + filename + "'."); - return null; } catch (IOException e) { - System.err.println("Unknown I/O error while reading file '" + filename + "'."); + System.err.println("Error while reading file '" + filename + "'."); System.err.println(e.getMessage()); return null; } } - public static OWLOntology loadOntology(String filename, OWLOntologyManager manager) { + private static OWLOntology loadOntology(String filename, OWLOntologyManager manager) { try { if (filename.isEmpty()) { return manager.createOntology(); } + InputStream input = new FileInputStream(new File(filename)); return manager.loadOntologyFromOntologyDocument(input); } catch (FileNotFoundException e) { @@ -264,7 +260,7 @@ private Iterator> modifyOntologyAndSolve(UelModel System.out.println("Final number of subsumptions: " + goal.getSubsumptions().size()); System.out.println("Final number of dissubsumptions: " + goal.getDissubsumptions().size()); System.out.println("(Dis-)Unification problem:"); - System.out.println(uelModel.printGoal(true)); + System.out.println(uelModel.printGoal()); } uelModel.initializeUnificationAlgorithm(algorithmName); diff --git a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/main/UnifierIterator.java b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/main/UnifierIterator.java index bc0cc93e..4a05bb6b 100644 --- a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/main/UnifierIterator.java +++ b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/main/UnifierIterator.java @@ -23,10 +23,6 @@ public UnifierIterator(UelModel uelModel) { this.uelModel = uelModel; } - UelModel getUelModel() { - return uelModel; - } - private void compute() { UnificationAlgorithm algorithm = uelModel.getUnificationAlgorithm(); if (!isComputed) { @@ -44,6 +40,10 @@ private void compute() { } } + UelModel getUelModel() { + return uelModel; + } + @Override public boolean hasNext() { compute(); diff --git a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/processor/UelModel.java b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/processor/UelModel.java index 38288a74..36d00542 100644 --- a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/processor/UelModel.java +++ b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/processor/UelModel.java @@ -49,6 +49,14 @@ private static OWLOntology createEmptyOntology() { } } + public static String removeQuotes(String str) { + String ret = str; + if ((str.startsWith("\"") && str.endsWith("\"")) || (str.startsWith("'") && str.endsWith("'"))) { + ret = str.substring(1, str.length() - 1); + } + return ret; + } + private boolean allUnifiersFound; private AtomManager atomManager; private int currentUnifierIndex; @@ -65,7 +73,7 @@ public UelModel(OntologyProvider provider) { private void addAllShortForms(OWLOntology ontology, Set entities) { for (OWLEntity entity : entities) { String shortForm = getShortForm(entity, ontology); - shortFormMap.put(entity.toStringID(), StringRenderer.removeQuotes(shortForm)); + shortFormMap.put(entity.toStringID(), removeQuotes(shortForm)); } } @@ -148,9 +156,8 @@ private String getShortForm(OWLEntity entity, OWLOntology ontology) { return entity.getIRI().getShortForm(); } - // TODO check if the first parameter is still needed - public StringRenderer getStringRenderer(boolean shortForm, Set background) { - return StringRenderer.createInstance(atomManager, shortForm ? shortFormMap : null, background); + public StringRenderer getStringRenderer(Set background) { + return StringRenderer.createInstance(atomManager, shortFormMap, background); } public UnificationAlgorithm getUnificationAlgorithm() { @@ -222,20 +229,20 @@ public void markUndefAsUserVariables() { } } - public String printCurrentUnifier(boolean shortForm) { + public String printCurrentUnifier() { Unifier unifier = getCurrentUnifier(); if (unifier == null) { return ""; } - return printUnifier(shortForm, unifier); + return printUnifier(unifier); } - public String printGoal(boolean shortForm) { - return getStringRenderer(shortForm, null).renderGoal(goal); + public String printGoal() { + return getStringRenderer(null).renderGoal(goal); } - public String printUnifier(boolean shortForm, Unifier unifier) { - return getStringRenderer(shortForm, unifier.getDefinitions()).renderDefinitions(unifier.getDefinitions()); + public String printUnifier(Unifier unifier) { + return getStringRenderer(unifier.getDefinitions()).renderUnifier(unifier); } public void recomputeShortFormMap() { @@ -254,8 +261,12 @@ public Set renderCurrentUnifier() { return renderUnifier(unifier); } + public Set renderDefinitions() { + return getOWLRenderer(null).renderAxioms(goal.getDefinitions()); + } + public Set renderUnifier(Unifier unifier) { - return getOWLRenderer(unifier.getDefinitions()).renderDefinitions(unifier.getDefinitions()); + return getOWLRenderer(unifier.getDefinitions()).renderUnifier(unifier); } public void setCurrentUnifierIndex(int index) { diff --git a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/processor/UelOntology.java b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/processor/UelOntology.java index 285029f1..fd2e4739 100644 --- a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/processor/UelOntology.java +++ b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/processor/UelOntology.java @@ -127,7 +127,7 @@ public Set processClassExpression(OWLClassExpression expression, Set processClassExpression(OWLClassExpression expression, Set newDefinitions, Set toVisit) { + private void loadFlatDefinition(Integer id, Set newDefinitions, Set toVisit) { OWLClass cls = nameMap.get(id); if (cls.equals(top)) { // do not expand definitions beyond top @@ -165,8 +165,6 @@ private void createFlatDefinition(Integer id, Set newDefinitions, Se Set right = flattenClassExpression(expression, newDefinitions, toVisit); atomManager.makeDefinitionVariable(id); - // TODO introduce new 'undef' variables for primitive definitions - // already here? newDefinitions.add(new Definition(id, right, primitive)); } diff --git a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/FunctionalRenderer.java b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/FunctionalRenderer.java new file mode 100644 index 00000000..ec5b0035 --- /dev/null +++ b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/FunctionalRenderer.java @@ -0,0 +1,49 @@ +package de.tudresden.inf.lat.uel.core.renderer; + +import java.util.Map; +import java.util.Set; + +import de.tudresden.inf.lat.uel.type.api.AtomManager; +import de.tudresden.inf.lat.uel.type.api.Definition; +import de.tudresden.inf.lat.uel.type.cons.RendererKeywords; + +public class FunctionalRenderer extends StringRenderer { + + protected FunctionalRenderer(AtomManager atomManager, Map shortFormMap, + Set background) { + super(atomManager, shortFormMap, background); + } + + @Override + protected String translateExistentialRestriction(String roleName, Integer childId) { + sb.append(RendererKeywords.objectSomeValuesFrom); + sb.append(RendererKeywords.open); + sb.append(roleName); + sb.append(RendererKeywords.space); + translateChild(childId); + sb.append(RendererKeywords.close); + return ""; + } + + @Override + protected String translateTop() { + sb.append(RendererKeywords.owlThing); + return ""; + } + + @Override + protected String translateTrueConjunction(Set atomIds) { + sb.append(RendererKeywords.objectIntersectionOf); + sb.append(RendererKeywords.open); + + for (Integer atomId : atomIds) { + translateAtom(atomId); + sb.append(RendererKeywords.space); + } + + sb.setLength(sb.length() - RendererKeywords.space.length()); + sb.append(RendererKeywords.close); + return ""; + } + +} diff --git a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/KRSSRenderer.java b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/KRSSRenderer.java index a981f688..8851994f 100644 --- a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/KRSSRenderer.java +++ b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/KRSSRenderer.java @@ -5,7 +5,7 @@ import de.tudresden.inf.lat.uel.type.api.AtomManager; import de.tudresden.inf.lat.uel.type.api.Definition; -import de.tudresden.inf.lat.uel.type.cons.KRSSKeyword; +import de.tudresden.inf.lat.uel.type.cons.RendererKeywords; public class KRSSRenderer extends StringRenderer { @@ -13,55 +13,37 @@ protected KRSSRenderer(AtomManager atomManager, Map shortFormMap super(atomManager, shortFormMap, background); } - @Override - protected String translateDefinition(Definition definition) { - sb.append(KRSSKeyword.open); - if (definition.isPrimitive()) { - sb.append(KRSSKeyword.define_primitive_concept); - } else { - sb.append(KRSSKeyword.define_concept); - } - sb.append(KRSSKeyword.space); - translateAtom(definition.getDefiniendum()); - sb.append(KRSSKeyword.space); - translateConjunction(definition.getRight()); - sb.append(KRSSKeyword.close); - sb.append(System.lineSeparator()); - sb.append(System.lineSeparator()); - return ""; - } - @Override protected String translateExistentialRestriction(String roleName, Integer childId) { - sb.append(KRSSKeyword.open); - sb.append(KRSSKeyword.some); - sb.append(KRSSKeyword.space); + sb.append(RendererKeywords.open); + sb.append(RendererKeywords.some); + sb.append(RendererKeywords.space); sb.append(roleName); - sb.append(KRSSKeyword.space); + sb.append(RendererKeywords.space); translateChild(childId); - sb.append(KRSSKeyword.close); + sb.append(RendererKeywords.close); return ""; } @Override protected String translateTop() { - sb.append(KRSSKeyword.top); + sb.append(RendererKeywords.krssTop); return ""; } @Override protected String translateTrueConjunction(Set atomIds) { - sb.append(KRSSKeyword.open); - sb.append(KRSSKeyword.and); - sb.append(KRSSKeyword.space); + sb.append(RendererKeywords.open); + sb.append(RendererKeywords.and); + sb.append(RendererKeywords.space); for (Integer atomId : atomIds) { translateAtom(atomId); - sb.append(KRSSKeyword.space); + sb.append(RendererKeywords.space); } - sb.setLength(sb.length() - KRSSKeyword.space.length()); - sb.append(KRSSKeyword.close); + sb.setLength(sb.length() - RendererKeywords.space.length()); + sb.append(RendererKeywords.close); return ""; } diff --git a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/ManchesterRenderer.java b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/ManchesterRenderer.java new file mode 100644 index 00000000..704f530c --- /dev/null +++ b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/ManchesterRenderer.java @@ -0,0 +1,51 @@ +package de.tudresden.inf.lat.uel.core.renderer; + +import java.util.Map; +import java.util.Set; + +import de.tudresden.inf.lat.uel.type.api.AtomManager; +import de.tudresden.inf.lat.uel.type.api.Definition; +import de.tudresden.inf.lat.uel.type.cons.RendererKeywords; + +public class ManchesterRenderer extends StringRenderer { + + protected ManchesterRenderer(AtomManager atomManager, Map shortFormMap, + Set background) { + super(atomManager, shortFormMap, background); + } + + @Override + protected String translateExistentialRestriction(String roleName, Integer childId) { + sb.append(RendererKeywords.open); + sb.append(roleName); + sb.append(RendererKeywords.space); + sb.append(RendererKeywords.some); + sb.append(RendererKeywords.space); + translateChild(childId); + sb.append(RendererKeywords.close); + return ""; + } + + @Override + protected String translateTop() { + sb.append(RendererKeywords.owlThing); + return ""; + } + + @Override + protected String translateTrueConjunction(Set atomIds) { + sb.append(RendererKeywords.open); + + for (Integer atomId : atomIds) { + translateAtom(atomId); + sb.append(RendererKeywords.space); + sb.append(RendererKeywords.and); + sb.append(RendererKeywords.space); + } + + sb.setLength(sb.length() - 2 * RendererKeywords.space.length() - RendererKeywords.and.length()); + sb.append(RendererKeywords.close); + return ""; + } + +} diff --git a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/OWLRenderer.java b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/OWLRenderer.java index 000915b5..5df4f890 100644 --- a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/OWLRenderer.java +++ b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/OWLRenderer.java @@ -12,7 +12,10 @@ import org.semanticweb.owlapi.model.OWLObjectProperty; import de.tudresden.inf.lat.uel.type.api.AtomManager; +import de.tudresden.inf.lat.uel.type.api.Axiom; import de.tudresden.inf.lat.uel.type.api.Definition; +import de.tudresden.inf.lat.uel.type.api.Dissubsumption; +import de.tudresden.inf.lat.uel.type.api.Subsumption; public class OWLRenderer extends Renderer> { @@ -41,11 +44,13 @@ protected void initialize() { } @Override - protected Set translateDefinition(Definition definition) { - OWLClassExpression definiendum = translateAtom(definition.getDefiniendum()); - OWLClassExpression definiens = translateConjunction(definition.getRight()); - OWLAxiom newAxiom = definition.isPrimitive() ? dataFactory.getOWLSubClassOfAxiom(definiendum, definiens) - : dataFactory.getOWLEquivalentClassesAxiom(definiendum, definiens); + protected Set translateAxiom(Axiom axiom) { + OWLClassExpression left = translateConjunction(axiom.getLeft()); + OWLClassExpression right = translateConjunction(axiom.getRight()); + boolean subclassof = (axiom instanceof Subsumption) || (axiom instanceof Dissubsumption) + || ((axiom instanceof Definition) && (((Definition) axiom).isPrimitive())); + OWLAxiom newAxiom = subclassof ? dataFactory.getOWLSubClassOfAxiom(left, right) + : dataFactory.getOWLEquivalentClassesAxiom(left, right); axioms.add(newAxiom); return axioms; } diff --git a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/Renderer.java b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/Renderer.java index d952af3d..bbb62ed8 100644 --- a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/Renderer.java +++ b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/Renderer.java @@ -6,7 +6,10 @@ import org.semanticweb.owlapi.model.IRI; import de.tudresden.inf.lat.uel.type.api.AtomManager; +import de.tudresden.inf.lat.uel.type.api.Axiom; import de.tudresden.inf.lat.uel.type.api.Definition; +import de.tudresden.inf.lat.uel.type.api.Goal; +import de.tudresden.inf.lat.uel.type.impl.Unifier; abstract class Renderer { @@ -38,10 +41,10 @@ private Set getDefinition(Integer atomId) { private String getShortForm(String id) { boolean alias = false; String label = id; + if (id.endsWith(AtomManager.UNDEF_SUFFIX)) { label = id.substring(0, id.length() - AtomManager.UNDEF_SUFFIX.length()); } - String str = shortFormMap.get(label); if (str != null) { alias = true; @@ -52,7 +55,7 @@ private String getShortForm(String id) { } if (alias) { - return "\"" + label + "\""; + return "<" + label + ">"; } else { return IRI.create(label).getShortForm(); } @@ -66,13 +69,25 @@ public ExpressionType renderAtom(Integer atomId) { return finalizeExpression(); } - public AxiomsType renderDefinitions(Set definitions) { + public AxiomsType renderAxioms(Set axioms) { initialize(); - for (Definition definition : definitions) { - if (!restrictToUserVariables || atomManager.getUserVariables().contains(definition.getDefiniendum())) { - translateDefinition(definition); - } - } + translateAxioms(axioms); + return finalizeAxioms(); + } + + public ExpressionType renderConjunction(Set atomIds) { + initialize(); + translateConjunction(atomIds); + return finalizeExpression(); + } + + public AxiomsType renderGoal(Goal input) { + initialize(); + translateAxioms(input.getDefinitions()); + translateAxioms(input.getEquations()); + translateAxioms(input.getSubsumptions()); + translateAxioms(input.getDisequations()); + translateAxioms(input.getDissubsumptions()); return finalizeAxioms(); } @@ -84,6 +99,22 @@ public String renderName(Integer atomId) { return name; } + public ExpressionType renderTop() { + initialize(); + translateTop(); + return finalizeExpression(); + } + + public AxiomsType renderUnifier(Unifier unifier) { + initialize(); + for (Definition definition : unifier.getDefinitions()) { + if (!restrictToUserVariables || atomManager.getUserVariables().contains(definition.getDefiniendum())) { + translateAxiom(definition); + } + } + return finalizeAxioms(); + } + protected ExpressionType translateAtom(Integer atomId) { if (atomManager.getExistentialRestrictions().contains(atomId)) { Integer childId = atomManager.getChild(atomId); @@ -97,6 +128,16 @@ protected ExpressionType translateAtom(Integer atomId) { } } + protected abstract AxiomsType translateAxiom(Axiom axiom); + + public AxiomsType translateAxioms(Set axioms) { + AxiomsType ret = null; + for (Axiom axiom : axioms) { + ret = translateAxiom(axiom); + } + return ret; + } + protected ExpressionType translateChild(Integer childId) { if (restrictToUserVariables && atomManager.getFlatteningVariables().contains(childId)) { return translateConjunction(getDefinition(childId)); @@ -115,8 +156,6 @@ protected ExpressionType translateConjunction(Set atomIds) { } } - protected abstract AxiomsType translateDefinition(Definition definition); - protected abstract ExpressionType translateExistentialRestriction(String roleName, Integer childId); protected abstract ExpressionType translateName(Integer atomId); diff --git a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/StringRenderer.java b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/StringRenderer.java index 94f0da74..503c9737 100644 --- a/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/StringRenderer.java +++ b/uel-core/src/main/java/de/tudresden/inf/lat/uel/core/renderer/StringRenderer.java @@ -6,21 +6,12 @@ import de.tudresden.inf.lat.uel.type.api.AtomManager; import de.tudresden.inf.lat.uel.type.api.Axiom; import de.tudresden.inf.lat.uel.type.api.Definition; -import de.tudresden.inf.lat.uel.type.api.Goal; public abstract class StringRenderer extends Renderer { public static StringRenderer createInstance(AtomManager atomManager, Map shortFormMap, Set background) { - return new KRSSRenderer(atomManager, shortFormMap, background); - } - - public static String removeQuotes(String str) { - String ret = str; - if ((str.startsWith("\"") && str.endsWith("\"")) || (str.startsWith("'") && str.endsWith("'"))) { - ret = str.substring(1, str.length() - 1); - } - return ret; + return new ManchesterRenderer(atomManager, shortFormMap, background); } protected StringBuilder sb; @@ -36,6 +27,7 @@ protected String finalizeAxioms() { @Override protected String finalizeExpression() { + // TODO remove '<' and '>' around result? return sb.toString(); } @@ -44,34 +36,16 @@ protected void initialize() { sb = new StringBuilder(); } - public String renderAtomWithoutQuotes(Integer atomId) { - return removeQuotes(renderAtom(atomId)); - } - - public String renderGoal(Goal input) { - sb = new StringBuilder(); - translateAxioms(input.getDefinitions()); - translateAxioms(input.getEquations()); - translateAxioms(input.getSubsumptions()); - translateAxioms(input.getDisequations()); - translateAxioms(input.getDissubsumptions()); - return sb.toString(); - } - - public String renderNameWithoutQuotes(Integer atomId) { - return removeQuotes(renderName(atomId)); - } - - private void translateAxioms(Set axioms) { - for (Axiom axiom : axioms) { - translateConjunction(axiom.getLeft()); - sb.append(" "); - sb.append(axiom.getConnective()); - sb.append(" "); - translateConjunction(axiom.getRight()); - sb.append(System.lineSeparator()); - sb.append(System.lineSeparator()); - } + @Override + protected String translateAxiom(Axiom axiom) { + translateConjunction(axiom.getLeft()); + sb.append(" "); + sb.append(axiom.getConnective()); + sb.append(" "); + translateConjunction(axiom.getRight()); + sb.append(System.lineSeparator()); + sb.append(System.lineSeparator()); + return ""; } @Override diff --git a/uel-core/src/test/java/de/tudresden/inf/lat/uel/core/main/AlternativeUelStarterTest.java b/uel-core/src/test/java/de/tudresden/inf/lat/uel/core/main/AlternativeUelStarterTest.java index b75ca729..19d1afb5 100644 --- a/uel-core/src/test/java/de/tudresden/inf/lat/uel/core/main/AlternativeUelStarterTest.java +++ b/uel-core/src/test/java/de/tudresden/inf/lat/uel/core/main/AlternativeUelStarterTest.java @@ -1,7 +1,6 @@ package de.tudresden.inf.lat.uel.core.main; import java.io.BufferedReader; -import java.io.ByteArrayInputStream; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; @@ -13,20 +12,14 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; -import org.semanticweb.owlapi.apibinding.OWLManager; -import org.semanticweb.owlapi.formats.KRSS2DocumentFormat; import org.semanticweb.owlapi.model.OWLAxiom; import org.semanticweb.owlapi.model.OWLClass; -import org.semanticweb.owlapi.model.OWLDataFactory; import org.semanticweb.owlapi.model.OWLEquivalentClassesAxiom; import org.semanticweb.owlapi.model.OWLOntology; import org.semanticweb.owlapi.model.OWLOntologyCreationException; -import org.semanticweb.owlapi.model.OWLOntologyManager; -import org.semanticweb.owlapi.model.OWLOntologyStorageException; import org.semanticweb.owlapi.reasoner.OWLReasoner; -import de.tudresden.inf.lat.jcel.owlapi.main.JcelReasoner; -import de.tudresden.inf.lat.uel.core.processor.UelModel; +import de.tudresden.inf.lat.jcel.owlapi.main.JcelReasonerFactory; import de.tudresden.inf.lat.uel.core.processor.UnificationAlgorithmFactory; @RunWith(value = Parameterized.class) @@ -63,21 +56,18 @@ public static Collection data() { for (int i = 1; i <= maxTest; i++) { try { String baseFilename = apath + prefix + String.format("%02d", i); - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLDataFactory factory = manager.getOWLDataFactory(); - OWLOntology mainOntology = AlternativeUelStarter.loadOntology(baseFilename + ontologyFilename, manager); - OWLOntology subsumptions = AlternativeUelStarter.loadOntology(baseFilename + subsFilename, manager); - OWLOntology dissubsumptions = AlternativeUelStarter.loadOntology(baseFilename + dissubsFilename, - manager); - Set variables = AlternativeUelStarter.loadVariables(baseFilename + varFilename, factory); + OWLOntology mainOntology = ProcessorTest.loadKRSSOntology(baseFilename + ontologyFilename); + OWLOntology subsumptions = ProcessorTest.loadKRSSOntology(baseFilename + subsFilename); + OWLOntology dissubsumptions = ProcessorTest.loadKRSSOntology(baseFilename + dissubsFilename); + Set variables = AlternativeUelStarter.loadVariables(baseFilename + varFilename); BufferedReader testFile = new BufferedReader(new FileReader(baseFilename + testFilename)); Integer numberOfUnifiers = Integer.parseInt(testFile.readLine()); testFile.close(); data.add(new Object[] { mainOntology, subsumptions, dissubsumptions, variables, numberOfUnifiers }); - } catch (IOException ex) { + } catch (OWLOntologyCreationException | IOException ex) { throw new RuntimeException(ex); } } @@ -85,22 +75,6 @@ public static Collection data() { return data; } - private OWLReasoner createReasoner(OWLOntology ontology) throws OWLOntologyCreationException { - JcelReasoner reasoner = new JcelReasoner(ontology, false); - reasoner.precomputeInferences(); - return reasoner; - } - - String toString(OWLOntology ontology) { - StringBuffer sbuf = new StringBuffer(); - - for (OWLAxiom axiom : ontology.getAxioms()) { - sbuf.append(axiom.toString()); - sbuf.append("\n"); - } - return sbuf.toString(); - } - @Test public void tryOntology() throws OWLOntologyCreationException, IOException { @@ -110,48 +84,38 @@ public void tryOntology() throws OWLOntologyCreationException, IOException { UnifierIterator iterator = (UnifierIterator) starter.modifyOntologyAndSolve(subsumptions, dissubsumptions, variables, UnificationAlgorithmFactory.SAT_BASED_ALGORITHM); - UelModel uelModel = iterator.getUelModel(); - // TODO replace by OWLRenderer - String krssDefinitions = uelModel.getStringRenderer(false, null) - .renderDefinitions(uelModel.getGoal().getDefinitions()); - System.out.println(krssDefinitions); - System.out.println(); - System.out.println(); + Set background = iterator.getUelModel().renderDefinitions(); - int actualNumberOfUnifiers = 0; + Integer actualNumberOfUnifiers = 0; while (iterator.hasNext()) { - Set unifier = iterator.next(); actualNumberOfUnifiers++; - System.out.println(); - System.out.println("--- " + actualNumberOfUnifiers); - for (OWLEquivalentClassesAxiom def : unifier) { - System.out.println(def.toString()); - } - System.out.println(); - - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLOntology auxOntology = manager - .loadOntologyFromOntologyDocument(new ByteArrayInputStream(krssDefinitions.getBytes())); - for (OWLEquivalentClassesAxiom def : unifier) { - manager.addAxiom(auxOntology, def); - } - try { - manager.saveOntology(auxOntology, new KRSS2DocumentFormat(), System.out); - } catch (OWLOntologyStorageException e) { - e.printStackTrace(); - } - - OWLReasoner reasoner = createReasoner(auxOntology); + Set unifier = iterator.next(); + OWLOntology extendedOntology = ProcessorTest.createOntology(background, unifier); + // try { + // System.out.println(); + // System.out.println("---" + actualNumberOfUnifiers); + // OWLManager.createOWLOntologyManager().saveOntology(extendedOntology, + // new FunctionalSyntaxDocumentFormat(), System.out); + // System.out.println(); + // } catch (OWLOntologyStorageException e) { + // e.printStackTrace(); + // } + + OWLReasoner reasoner = new JcelReasonerFactory().createNonBufferingReasoner(extendedOntology); + reasoner.precomputeInferences(); for (OWLAxiom pos : subsumptions.getAxioms()) { + // System.out.println(pos + ": " + reasoner.isEntailed(pos)); Assert.assertTrue(reasoner.isEntailed(pos)); } for (OWLAxiom neg : dissubsumptions.getAxioms()) { + // System.out.println(neg + ": " + reasoner.isEntailed(neg)); Assert.assertTrue(!reasoner.isEntailed(neg)); } + reasoner.dispose(); } - Assert.assertEquals(numberOfUnifiers, (Integer) actualNumberOfUnifiers); + Assert.assertEquals(numberOfUnifiers, actualNumberOfUnifiers); } } diff --git a/uel-core/src/test/java/de/tudresden/inf/lat/uel/core/processor/ProcessorTest.java b/uel-core/src/test/java/de/tudresden/inf/lat/uel/core/main/ProcessorTest.java similarity index 74% rename from uel-core/src/test/java/de/tudresden/inf/lat/uel/core/processor/ProcessorTest.java rename to uel-core/src/test/java/de/tudresden/inf/lat/uel/core/main/ProcessorTest.java index 5b23f1da..5850c627 100644 --- a/uel-core/src/test/java/de/tudresden/inf/lat/uel/core/processor/ProcessorTest.java +++ b/uel-core/src/test/java/de/tudresden/inf/lat/uel/core/main/ProcessorTest.java @@ -1,17 +1,15 @@ -package de.tudresden.inf.lat.uel.core.processor; +package de.tudresden.inf.lat.uel.core.main; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; -import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; @@ -21,15 +19,20 @@ import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import org.semanticweb.owlapi.apibinding.OWLManager; +import org.semanticweb.owlapi.io.StreamDocumentSource; +import org.semanticweb.owlapi.krss2.parser.KRSS2OWLParser; import org.semanticweb.owlapi.model.OWLAxiom; import org.semanticweb.owlapi.model.OWLClass; import org.semanticweb.owlapi.model.OWLOntology; import org.semanticweb.owlapi.model.OWLOntologyCreationException; +import org.semanticweb.owlapi.model.OWLOntologyLoaderConfiguration; import org.semanticweb.owlapi.model.OWLOntologyManager; import org.semanticweb.owlapi.reasoner.Node; import org.semanticweb.owlapi.reasoner.OWLReasoner; import de.tudresden.inf.lat.jcel.owlapi.main.JcelReasonerFactory; +import de.tudresden.inf.lat.uel.core.processor.BasicOntologyProvider; +import de.tudresden.inf.lat.uel.core.processor.UelModel; import de.tudresden.inf.lat.uel.type.impl.Unifier; @RunWith(value = Parameterized.class) @@ -58,13 +61,25 @@ public ProcessorTest(String ontologyName, Set varNames, Set unde this.algorithmName = algorithmName; } - private OWLOntology createOntology(InputStream input) throws OWLOntologyCreationException { + static OWLOntology loadKRSSOntology(String input) throws OWLOntologyCreationException, IOException { OWLOntologyManager ontologyManager = OWLManager.createOWLOntologyManager(); - ontologyManager.loadOntologyFromOntologyDocument(input); - return ontologyManager.getOntologies().iterator().next(); + OWLOntology ontology = ontologyManager.createOntology(); + KRSS2OWLParser parser = new KRSS2OWLParser(); + parser.parse(new StreamDocumentSource(new FileInputStream(input)), ontology, + new OWLOntologyLoaderConfiguration()); + return ontology; } - private OWLReasoner createReasoner(OWLOntology ontology) { + static OWLOntology createOntology(Set background, Set unifier) + throws OWLOntologyCreationException { + OWLOntologyManager ontologyManager = OWLManager.createOWLOntologyManager(); + OWLOntology ontology = ontologyManager.createOntology(); + ontologyManager.addAxioms(ontology, background); + ontologyManager.addAxioms(ontology, unifier); + return ontology; + } + + static OWLReasoner createReasoner(OWLOntology ontology) { JcelReasonerFactory factory = new JcelReasonerFactory(); OWLReasoner reasoner = factory.createNonBufferingReasoner(ontology); reasoner.precomputeInferences(); @@ -89,9 +104,7 @@ public static Collection data() { while (algorithmName != null) { Integer nbUnifiers = Integer.parseInt(configFile.readLine()); if (!algorithmName.contains("ASP")) { - if ((i == 8) && algorithmName.equals(UnificationAlgorithmFactory.SAT_BASED_ALGORITHM)) { - data.add(new Object[] { ontologyName, varNames, undefVarNames, nbUnifiers, algorithmName }); - } + data.add(new Object[] { ontologyName, varNames, undefVarNames, nbUnifiers, algorithmName }); } algorithmName = configFile.readLine(); @@ -117,7 +130,7 @@ private static Set parseSet(String input) { @Test public void tryOntology() throws OWLOntologyCreationException, IOException, InterruptedException { Map idClassMap = new HashMap(); - OWLOntology owlOntology = createOntology(new FileInputStream(ontologyName)); + OWLOntology owlOntology = loadKRSSOntology(ontologyName); OWLOntologyManager ontologyManager = owlOntology.getOWLOntologyManager(); UelModel uelModel = new UelModel(new BasicOntologyProvider(ontologyManager)); Set clsSet = owlOntology.getClassesInSignature(); @@ -150,20 +163,20 @@ public void tryOntology() throws OWLOntologyCreationException, IOException, Inte while (uelModel.computeNextUnifier()) { } - List unifiers = uelModel.getUnifierList(); - Set goalAxioms = uelModel.getOWLRenderer(null).renderDefinitions(uelModel.getGoal().getDefinitions()); - - for (Unifier unifier : unifiers) { - OWLOntology extendedOntology = ontologyManager.createOntology(); - ontologyManager.addAxioms(extendedOntology, goalAxioms); - ontologyManager.addAxioms(extendedOntology, uelModel.renderUnifier(unifier)); + // cannot use 'owlOntology' here, as we may have introduced UNDEF + // variables + Set background = uelModel.renderDefinitions(); + for (Unifier unifier : uelModel.getUnifierList()) { + OWLOntology extendedOntology = createOntology(background, uelModel.renderUnifier(unifier)); OWLReasoner reasoner = createReasoner(extendedOntology); Node node = reasoner.getEquivalentClasses(idClassMap.get(conceptC)); OWLClass elem = idClassMap.get(conceptD); Assert.assertTrue(node.contains(elem)); + reasoner.dispose(); } - Assert.assertEquals(numberOfUnifiers, (Integer) unifiers.size()); + Assert.assertEquals(numberOfUnifiers, (Integer) uelModel.getUnifierList().size()); } + } diff --git a/uel-sat/src/main/java/de/tudresden/inf/lat/uel/sat/solver/SatUnificationAlgorithm.java b/uel-sat/src/main/java/de/tudresden/inf/lat/uel/sat/solver/SatUnificationAlgorithm.java index 43cca9a5..10c5f00a 100644 --- a/uel-sat/src/main/java/de/tudresden/inf/lat/uel/sat/solver/SatUnificationAlgorithm.java +++ b/uel-sat/src/main/java/de/tudresden/inf/lat/uel/sat/solver/SatUnificationAlgorithm.java @@ -516,7 +516,6 @@ private void resetSetOfSubsumers(Integer atomId) { */ private void runStep1(SatInput input) { // encode positive part of the goal - // TODO the atoms here could be top! take care of this case! for (Definition d : goal.getDefinitions()) { runStep1(d, input); } @@ -537,7 +536,9 @@ private void runStep1(SatInput input) { private void runStep1(Definition d, SatInput input) { runStep1(new Subsumption(d.getLeft(), d.getRight()), input); - runStep1(new Subsumption(d.getRight(), d.getLeft()), input); + if (!d.isPrimitive()) { + runStep1(new Subsumption(d.getRight(), d.getLeft()), input); + } } private void runStep1(Equation e, SatInput input) { diff --git a/uel-type/src/main/java/de/tudresden/inf/lat/uel/type/api/Axiom.java b/uel-type/src/main/java/de/tudresden/inf/lat/uel/type/api/Axiom.java index 6289251c..4f0bd87f 100644 --- a/uel-type/src/main/java/de/tudresden/inf/lat/uel/type/api/Axiom.java +++ b/uel-type/src/main/java/de/tudresden/inf/lat/uel/type/api/Axiom.java @@ -11,6 +11,7 @@ * */ public abstract class Axiom { + final Set left; final Set right; diff --git a/uel-type/src/main/java/de/tudresden/inf/lat/uel/type/api/Definition.java b/uel-type/src/main/java/de/tudresden/inf/lat/uel/type/api/Definition.java index 56acbffa..5065d0a3 100644 --- a/uel-type/src/main/java/de/tudresden/inf/lat/uel/type/api/Definition.java +++ b/uel-type/src/main/java/de/tudresden/inf/lat/uel/type/api/Definition.java @@ -6,7 +6,7 @@ import java.util.Collections; import java.util.Set; -public class Definition extends Equation { +public class Definition extends Axiom { private boolean primitive; public Definition(Integer left, Set right, boolean primitive) { @@ -14,6 +14,16 @@ public Definition(Integer left, Set right, boolean primitive) { this.primitive = primitive; } + @Override + public boolean equals(Object o) { + return super.equals(o) && primitive == ((Definition) o).primitive; + } + + @Override + public String getConnective() { + return primitive ? "⊑" : "≡"; + } + public Integer getDefiniendum() { return left.iterator().next(); } @@ -21,9 +31,4 @@ public Integer getDefiniendum() { public boolean isPrimitive() { return primitive; } - - @Override - public boolean equals(Object o) { - return super.equals(o) && primitive == ((Definition) o).primitive; - } } \ No newline at end of file diff --git a/uel-type/src/main/java/de/tudresden/inf/lat/uel/type/cons/KRSSKeyword.java b/uel-type/src/main/java/de/tudresden/inf/lat/uel/type/cons/RendererKeywords.java similarity index 51% rename from uel-type/src/main/java/de/tudresden/inf/lat/uel/type/cons/KRSSKeyword.java rename to uel-type/src/main/java/de/tudresden/inf/lat/uel/type/cons/RendererKeywords.java index 1d2d5909..74aa72c3 100644 --- a/uel-type/src/main/java/de/tudresden/inf/lat/uel/type/cons/KRSSKeyword.java +++ b/uel-type/src/main/java/de/tudresden/inf/lat/uel/type/cons/RendererKeywords.java @@ -1,12 +1,13 @@ package de.tudresden.inf.lat.uel.type.cons; /** - * This interface contains the main required keywords of KRSS (Knowledge - * Representation System Specification). + * This interface contains the keywords for rendering DL objects (existential + * restrictions, conjunctions, ...) in various string representations. * * @author Julian Mendez + * @author Stefan Borgwardt */ -public interface KRSSKeyword { +public interface RendererKeywords { /** * the string 'and' @@ -18,21 +19,6 @@ public interface KRSSKeyword { */ String close = ")"; - /** - * the string 'defconcept' - */ - String defconcept = "defconcept"; - - /** - * the string 'define-concept' - */ - String define_concept = "define-concept"; - - /** - * the string 'define-primitive-concept' - */ - String define_primitive_concept = "define-primitive-concept"; - /** * a string representing a line break */ @@ -56,6 +42,20 @@ public interface KRSSKeyword { /** * the string 'top' */ - String top = "top"; + String krssTop = "top"; + + /** + * the string 'owl:Thing' + */ + String owlThing = "owl:Thing"; + + /** + * the string 'ObjectSomeValuesFrom' + */ + String objectSomeValuesFrom = "ObjectSomeValuesFrom"; + /** + * the string 'ObjectIntersectionOf' + */ + String objectIntersectionOf = "ObjectIntersectionOf"; } diff --git a/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/RefineController.java b/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/RefineController.java index 137f2605..fefcdbef 100644 --- a/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/RefineController.java +++ b/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/RefineController.java @@ -20,6 +20,7 @@ import de.tudresden.inf.lat.uel.core.processor.UelModel; import de.tudresden.inf.lat.uel.core.renderer.StringRenderer; import de.tudresden.inf.lat.uel.type.api.Definition; +import de.tudresden.inf.lat.uel.type.api.Dissubsumption; /** * @author Stefan Borgwardt @@ -51,16 +52,15 @@ public void close() { public Set getDissubsumptions() { // construct (primitive) definitions representing dissubsumptions from // selected atoms - Function>, Stream> definitionsForEntry = entry -> entry.getValue() - .stream() - .map(atom -> new Definition(entry.getKey().getId(), Collections.singleton(atom.getId()), true)); + Function>, Stream> dissubsumptionsForEntry = entry -> entry + .getValue().stream().map(atom -> new Dissubsumption(Collections.singleton(entry.getKey().getId()), + Collections.singleton(atom.getId()))); - Set dissubsumptions = view.getSelectedAtoms().entrySet().stream().flatMap(definitionsForEntry) - .collect(Collectors.toSet()); + Set dissubsumptions = view.getSelectedAtoms().entrySet().stream() + .flatMap(dissubsumptionsForEntry).collect(Collectors.toSet()); // render the definitions as OWLSubClassOfAxioms - return model.getOWLRenderer(model.getCurrentUnifier().getDefinitions()) - .renderDefinitions(dissubsumptions); + return model.getOWLRenderer(model.getCurrentUnifier().getDefinitions()).renderAxioms(dissubsumptions); } public void open() { @@ -76,16 +76,14 @@ public File showSaveFileDialog() { private void updateView() { Map> map = new HashMap>(); Set definitions = model.getCurrentUnifier().getDefinitions(); - StringRenderer renderer = model.getStringRenderer(true, definitions); + StringRenderer renderer = model.getStringRenderer(definitions); // convert unifier into map between LabelIds for the view for (Definition definition : definitions) { Integer varId = definition.getDefiniendum(); if (model.getGoal().getAtomManager().getUserVariables().contains(varId)) { - map.put(new LabelId(renderer.renderNameWithoutQuotes(varId), varId), - definition.getRight().stream() - .map(atomId -> new LabelId(renderer.renderAtomWithoutQuotes(atomId), atomId)) - .collect(Collectors.toList())); + map.put(new LabelId(renderer.renderAtom(varId), varId), definition.getRight().stream() + .map(atomId -> new LabelId(renderer.renderAtom(atomId), atomId)).collect(Collectors.toList())); } } diff --git a/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/RefineView.java b/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/RefineView.java index 0569aa54..f6d2a88e 100644 --- a/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/RefineView.java +++ b/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/RefineView.java @@ -23,7 +23,7 @@ import javax.swing.SwingConstants; import javax.swing.border.EmptyBorder; -import de.tudresden.inf.lat.uel.type.cons.KRSSKeyword; +import de.tudresden.inf.lat.uel.core.renderer.StringRenderer; /** * This dialog allows to select non-variable atoms that should not be included @@ -75,7 +75,8 @@ private void addList(int rowCount, LabelId var, List atoms) { GridBagConstraints atomsConstraints = new GridBagConstraints(); if (atoms.isEmpty()) { - JLabel label = UelUI.addLabel(selectionPanel, KRSSKeyword.top, Message.tooltipSubsumedByTop); + JLabel label = UelUI.addLabel(selectionPanel, StringRenderer.createInstance(null, null, null).renderTop(), + Message.tooltipSubsumedByTop); label.setBorder(new EmptyBorder(UelUI.GAP_SIZE, 0, UelUI.GAP_SIZE, UelUI.GAP_SIZE)); label.setHorizontalTextPosition(SwingConstants.LEFT); label.setVerticalAlignment(SwingConstants.TOP); diff --git a/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/StatInfoController.java b/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/StatInfoController.java index 95eea89b..82f7e2da 100644 --- a/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/StatInfoController.java +++ b/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/StatInfoController.java @@ -35,7 +35,7 @@ private void executeSaveGoal() { try { BufferedWriter writer = new BufferedWriter(new FileWriter(file)); - writer.write(model.printGoal(false)); + writer.write(model.printGoal()); writer.close(); } catch (IOException e) { throw new RuntimeException(e); @@ -53,7 +53,7 @@ public void open() { } public void updateView() { - view.setGoalText(model.printGoal(true)); + view.setGoalText(model.printGoal()); StringBuffer info = new StringBuffer(); for (Entry pair : model.getUnificationAlgorithm().getInfo()) { info.append(pair.getKey()); diff --git a/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/UnifierController.java b/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/UnifierController.java index 1d04d262..b73903da 100644 --- a/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/UnifierController.java +++ b/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/UnifierController.java @@ -97,7 +97,7 @@ public void open() { private void updateUnifierView() { int index = model.getCurrentUnifierIndex(); if (index > -1) { - view.setUnifier(model.printCurrentUnifier(true)); + view.setUnifier(model.printCurrentUnifier()); view.setSaveRefineButtons(true); } else { view.setUnifier("[not unifiable]"); diff --git a/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/VarSelectionController.java b/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/VarSelectionController.java index 522b0d62..10a59179 100644 --- a/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/VarSelectionController.java +++ b/uel-ui/src/main/java/de/tudresden/inf/lat/uel/plugin/ui/VarSelectionController.java @@ -59,17 +59,17 @@ public void open() { } private void updateLists() { - StringRenderer renderer = model.getStringRenderer(true, null); + StringRenderer renderer = model.getStringRenderer(null); List constants = new ArrayList(); for (Integer id : model.getGoal().getAtomManager().getConstants()) { - constants.add(new LabelId(renderer.renderNameWithoutQuotes(id), id)); + constants.add(new LabelId(renderer.renderAtom(id), id)); } view.setConstants(constants); List variables = new ArrayList(); for (Integer id : model.getGoal().getAtomManager().getUserVariables()) { - variables.add(new LabelId(renderer.renderNameWithoutQuotes(id), id)); + variables.add(new LabelId(renderer.renderAtom(id), id)); } view.setVariables(variables); }