Skip to content

Commit

Permalink
directly render to OWLAxioms, tests currently fail
Browse files Browse the repository at this point in the history
  • Loading branch information
stefborg committed Jan 11, 2016
1 parent b8fea98 commit 7f53a28
Show file tree
Hide file tree
Showing 34 changed files with 570 additions and 587 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package de.tudresden.inf.lat.uel.asp.solver;

import java.io.IOException;
import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.AbstractMap.SimpleEntry;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
Expand Down Expand Up @@ -66,10 +65,7 @@ public boolean computeNextUnifier() throws InterruptedException {

@Override
public List<Entry<String, String>> getInfo() {
Entry<String, String> e = new AbstractMap.SimpleEntry<String, String>("ASP encoding", aspInput.getProgram());
List<Entry<String, String>> res = new ArrayList<Entry<String, String>>();
res.add(e);
return res;
return Collections.singletonList(new SimpleEntry<String, String>("ASP encoding", aspInput.getProgram()));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import de.tudresden.inf.lat.uel.core.processor.BasicOntologyProvider;
import de.tudresden.inf.lat.uel.core.processor.UelModel;
import de.tudresden.inf.lat.uel.core.processor.UnificationAlgorithmFactory;
import de.tudresden.inf.lat.uel.core.type.OWLUelClassDefinition;
import de.tudresden.inf.lat.uel.type.api.AtomManager;
import de.tudresden.inf.lat.uel.type.api.Goal;
import de.tudresden.inf.lat.uel.type.api.UnificationAlgorithm;
Expand Down Expand Up @@ -150,14 +149,14 @@ public static void main(String[] args) {
}
String algorithmName = algorithmNames.get(algorithmIdx);

Iterator<Set<OWLUelClassDefinition>> result = starter.modifyOntologyAndSolve(subsumptions, dissubsumptions,
Iterator<Set<OWLEquivalentClassesAxiom>> result = starter.modifyOntologyAndSolve(subsumptions, dissubsumptions,
variables, algorithmName);
int unifierIdx = 1;
while (result.hasNext()) {
System.out.println("Unifier " + unifierIdx + ":");
Set<OWLUelClassDefinition> unifier = result.next();
for (OWLUelClassDefinition def : unifier) {
System.out.println(def.asOWLEquivalentClassesAxiom().toString());
Set<OWLEquivalentClassesAxiom> unifier = result.next();
for (OWLEquivalentClassesAxiom def : unifier) {
System.out.println(def.toString());
}
System.out.println();
unifierIdx++;
Expand Down Expand Up @@ -224,7 +223,7 @@ public static OWLOntology loadOntology(String filename, OWLOntologyManager manag
}
}

public Iterator<Set<OWLUelClassDefinition>> modifyOntologyAndSolve(OWLOntology positiveProblem,
public Iterator<Set<OWLEquivalentClassesAxiom>> modifyOntologyAndSolve(OWLOntology positiveProblem,
OWLOntology negativeProblem, Set<OWLClass> variables, String algorithmName) {

UelModel uelModel = new UelModel(new BasicOntologyProvider(ontologyManager));
Expand All @@ -233,7 +232,7 @@ public Iterator<Set<OWLUelClassDefinition>> modifyOntologyAndSolve(OWLOntology p
return modifyOntologyAndSolve(uelModel, variables, algorithmName);
}

public Iterator<Set<OWLUelClassDefinition>> modifyOntologyAndSolve(Set<OWLSubClassOfAxiom> subsumptions,
public Iterator<Set<OWLEquivalentClassesAxiom>> modifyOntologyAndSolve(Set<OWLSubClassOfAxiom> subsumptions,
Set<OWLEquivalentClassesAxiom> equations, Set<OWLSubClassOfAxiom> dissubsumptions,
Set<OWLEquivalentClassesAxiom> disequations, Set<OWLClass> variables, String algorithmName) {

Expand All @@ -243,7 +242,7 @@ public Iterator<Set<OWLUelClassDefinition>> modifyOntologyAndSolve(Set<OWLSubCla
return modifyOntologyAndSolve(uelModel, variables, algorithmName);
}

private Iterator<Set<OWLUelClassDefinition>> modifyOntologyAndSolve(UelModel uelModel, Set<OWLClass> variables,
private Iterator<Set<OWLEquivalentClassesAxiom>> modifyOntologyAndSolve(UelModel uelModel, Set<OWLClass> variables,
String algorithmName) {

uelModel.makeClassesUserVariables(variables);
Expand All @@ -269,7 +268,7 @@ private Iterator<Set<OWLUelClassDefinition>> modifyOntologyAndSolve(UelModel uel
}

uelModel.initializeUnificationAlgorithm(algorithmName);
return new UnifierIterator(uelModel.getUnificationAlgorithm(), uelModel.getTranslator());
return new UnifierIterator(uelModel);
}

public List<Entry<String, String>> getStats() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,32 @@
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.stream.Collectors;

import de.tudresden.inf.lat.uel.core.type.OWLUelClassDefinition;
import de.tudresden.inf.lat.uel.core.type.UnifierTranslator;
import de.tudresden.inf.lat.uel.type.api.AtomManager;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLEquivalentClassesAxiom;

import de.tudresden.inf.lat.uel.core.processor.UelModel;
import de.tudresden.inf.lat.uel.type.api.UnificationAlgorithm;
import de.tudresden.inf.lat.uel.type.impl.Unifier;

public class UnifierIterator implements Iterator<Set<OWLUelClassDefinition>> {
public class UnifierIterator implements Iterator<Set<OWLEquivalentClassesAxiom>> {

private boolean hasNext = false;
private boolean isComputed = false;
private UnificationAlgorithm algorithm;
private UnifierTranslator translator;
private UelModel uelModel;
private Unifier unifier;

public UnifierIterator(UnificationAlgorithm algorithm, UnifierTranslator translator) {
this.algorithm = algorithm;
this.translator = translator;
}

protected UnificationAlgorithm getAlgorithm() {
return this.algorithm;
public UnifierIterator(UelModel uelModel) {
this.uelModel = uelModel;
}

protected AtomManager getAtomManager() {
return this.translator.getAtomManager();
UelModel getUelModel() {
return uelModel;
}

private void compute() {
UnificationAlgorithm algorithm = uelModel.getUnificationAlgorithm();
if (!isComputed) {
try {
hasNext = algorithm.computeNextUnifier();
Expand All @@ -54,15 +51,20 @@ public boolean hasNext() {
}

@Override
public Set<OWLUelClassDefinition> next() {
public Set<OWLEquivalentClassesAxiom> next() {
compute();
if (!hasNext) {
throw new NoSuchElementException();
}

isComputed = false;

return translator.createOWLUelClassDefinitions(unifier.getDefinitions());
Set<OWLAxiom> axioms = uelModel.renderUnifier(unifier);
return axioms.stream().map(axiom -> {
if (axiom instanceof OWLEquivalentClassesAxiom)
return (OWLEquivalentClassesAxiom) axiom;
throw new IllegalStateException("Expected OWLEquivalentClassesAxiom");
}).collect(Collectors.toSet());
}

@Override
Expand Down
Loading

0 comments on commit 7f53a28

Please sign in to comment.