Skip to content

Commit

Permalink
Fixes #131
Browse files Browse the repository at this point in the history
The model manage now listens for reasoner preference changes and fires
an ONTOLOGY_CLASSIFIED event when the preferences change.  This has the
desired effect (and is o.k. since Yevgeny changed the inferred
hierarchy to prevent it from collapsing on this event).
  • Loading branch information
matthewhorridge committed Mar 6, 2015
1 parent f6fc8c9 commit 5d825a6
Show file tree
Hide file tree
Showing 2 changed files with 114 additions and 107 deletions.
Expand Up @@ -25,6 +25,7 @@
import org.protege.editor.owl.model.inference.OWLReasonerManager;
import org.protege.editor.owl.model.inference.OWLReasonerManagerImpl;
import org.protege.editor.owl.model.inference.ReasonerPreferences;
import org.protege.editor.owl.model.inference.ReasonerPreferencesListener;
import org.protege.editor.owl.model.io.*;
import org.protege.editor.owl.model.library.OntologyCatalogManager;
import org.protege.editor.owl.model.selection.ontologies.ImportsClosureOntologySelectionStrategy;
Expand Down Expand Up @@ -973,6 +974,12 @@ private void rebuildEntityIndices() {
public OWLReasonerManager getOWLReasonerManager() {
if (owlReasonerManager == null) {
owlReasonerManager = new OWLReasonerManagerImpl(this);
owlReasonerManager.getReasonerPreferences().addListener(new ReasonerPreferencesListener() {
@Override
public void preferencesChanged() {
fireEvent(EventType.ONTOLOGY_CLASSIFIED);
}
});
}
return owlReasonerManager;
}
Expand Down
Expand Up @@ -10,62 +10,63 @@

public class ReasonerPreferences {
public enum OptionalInferenceTask {
// Class Property Inferences
SHOW_CLASS_UNSATISFIABILITY(true, InferenceType.CLASS_HIERARCHY),
SHOW_INFERRED_EQUIVALENT_CLASSES(true, InferenceType.CLASS_HIERARCHY),
SHOW_INFERRED_SUPER_CLASSES(true, InferenceType.CLASS_HIERARCHY),
SHOW_INFERED_CLASS_MEMBERS(true, InferenceType.CLASS_ASSERTIONS),
SHOW_INFERRED_DISJOINT_CLASSES(false, InferenceType.CLASS_HIERARCHY),
// Object Property Inferences
SHOW_OBJECT_PROPERTY_UNSATISFIABILITY(true, InferenceType.OBJECT_PROPERTY_HIERARCHY),
SHOW_INFERRED_OBJECT_PROPERTY_DOMAINS(false, InferenceType.CLASS_HIERARCHY),
SHOW_INFERRED_OBJECT_PROPERTY_RANGES(false, InferenceType.CLASS_HIERARCHY),
SHOW_INFERRED_EQUIVALENT_OBJECT_PROPERTIES(true, InferenceType.OBJECT_PROPERTY_HIERARCHY),
SHOW_INFERRED_SUPER_OBJECT_PROPERTIES(true, InferenceType.OBJECT_PROPERTY_HIERARCHY),
SHOW_INFERRED_INVERSE_PROPERTIES(true, InferenceType.OBJECT_PROPERTY_HIERARCHY),
// Datatype Property Inferences
SHOW_INFERRED_DATATYPE_PROPERTY_DOMAINS(false, InferenceType.CLASS_HIERARCHY),
SHOW_INFERRED_EQUIVALENT_DATATYPE_PROPERTIES(true, InferenceType.DATA_PROPERTY_HIERARCHY),
SHOW_INFERRED_SUPER_DATATYPE_PROPERTIES(true, InferenceType.DATA_PROPERTY_HIERARCHY),
// Individual Inferences
SHOW_INFERRED_TYPES(true, InferenceType.CLASS_ASSERTIONS),
SHOW_INFERRED_OBJECT_PROPERTY_ASSERTIONS(true, InferenceType.OBJECT_PROPERTY_ASSERTIONS),
SHOW_INFERRED_DATA_PROPERTY_ASSERTIONS(false, InferenceType.DATA_PROPERTY_ASSERTIONS),
SHOW_INFERRED_SAMEAS_INDIVIDUAL_ASSERTIONS(true, InferenceType.SAME_INDIVIDUAL);
;
private boolean enabledByDefault;
private InferenceType suggestedInferenceType;
private OptionalInferenceTask(boolean enabledByDefault, InferenceType suggestedInferenceType) {
this.enabledByDefault = enabledByDefault;
this.suggestedInferenceType = suggestedInferenceType;
}
public String getKey() {
return toString();
}
public boolean getEnabledByDefault() {
return enabledByDefault;
}
public InferenceType getSuggestedInferenceType() {
return suggestedInferenceType;
}
}

public static final String PREFERENCES_SET_KEY = "INFERENCE_PREFS_SET";
// Class Property Inferences
SHOW_CLASS_UNSATISFIABILITY(true, InferenceType.CLASS_HIERARCHY),
SHOW_INFERRED_EQUIVALENT_CLASSES(true, InferenceType.CLASS_HIERARCHY),
SHOW_INFERRED_SUPER_CLASSES(true, InferenceType.CLASS_HIERARCHY),
SHOW_INFERED_CLASS_MEMBERS(true, InferenceType.CLASS_ASSERTIONS),
SHOW_INFERRED_DISJOINT_CLASSES(false, InferenceType.CLASS_HIERARCHY),

// Object Property Inferences
SHOW_OBJECT_PROPERTY_UNSATISFIABILITY(true, InferenceType.OBJECT_PROPERTY_HIERARCHY),
SHOW_INFERRED_OBJECT_PROPERTY_DOMAINS(false, InferenceType.CLASS_HIERARCHY),
SHOW_INFERRED_OBJECT_PROPERTY_RANGES(false, InferenceType.CLASS_HIERARCHY),
SHOW_INFERRED_EQUIVALENT_OBJECT_PROPERTIES(true, InferenceType.OBJECT_PROPERTY_HIERARCHY),
SHOW_INFERRED_SUPER_OBJECT_PROPERTIES(true, InferenceType.OBJECT_PROPERTY_HIERARCHY),
SHOW_INFERRED_INVERSE_PROPERTIES(true, InferenceType.OBJECT_PROPERTY_HIERARCHY),

// Datatype Property Inferences
SHOW_INFERRED_DATATYPE_PROPERTY_DOMAINS(false, InferenceType.CLASS_HIERARCHY),
SHOW_INFERRED_EQUIVALENT_DATATYPE_PROPERTIES(true, InferenceType.DATA_PROPERTY_HIERARCHY),
SHOW_INFERRED_SUPER_DATATYPE_PROPERTIES(true, InferenceType.DATA_PROPERTY_HIERARCHY),

// Individual Inferences
SHOW_INFERRED_TYPES(true, InferenceType.CLASS_ASSERTIONS),
SHOW_INFERRED_OBJECT_PROPERTY_ASSERTIONS(true, InferenceType.OBJECT_PROPERTY_ASSERTIONS),
SHOW_INFERRED_DATA_PROPERTY_ASSERTIONS(false, InferenceType.DATA_PROPERTY_ASSERTIONS),
SHOW_INFERRED_SAMEAS_INDIVIDUAL_ASSERTIONS(true, InferenceType.SAME_INDIVIDUAL);
;

private boolean enabledByDefault;
private InferenceType suggestedInferenceType;

private OptionalInferenceTask(boolean enabledByDefault, InferenceType suggestedInferenceType) {
this.enabledByDefault = enabledByDefault;
this.suggestedInferenceType = suggestedInferenceType;
}

public String getKey() {
return toString();
}

public boolean getEnabledByDefault() {
return enabledByDefault;
}

public InferenceType getSuggestedInferenceType() {
return suggestedInferenceType;
}
}

public static final String PREFERENCES_SET_KEY = "INFERENCE_PREFS_SET";
public static final String DEFAULT_REASONER_ID = "DEFAULT_REASONER_ID";

/* package */ static Preferences getPreferences() {

/* package */
static Preferences getPreferences() {
PreferencesManager prefMan = PreferencesManager.getInstance();
return prefMan.getPreferencesForSet(PREFERENCES_SET_KEY, ReasonerPreferences.class);
}

private DisplayedInferencePreferences displayed = new DisplayedInferencePreferences();
private PrecomputedInferencePreferences precompute = new PrecomputedInferencePreferences();
private String defaultReasonerId;
Expand All @@ -81,106 +82,105 @@ public void setDefaultReasonerId(String defaultReasonerId) {
}

public void load() {
Preferences prefs = getPreferences();
Preferences prefs = getPreferences();

displayed.load(this);
precompute.load(prefs);

displayed.load(this);
precompute.load(prefs);

defaultReasonerId = prefs.getString(DEFAULT_REASONER_ID, NoOpReasonerInfo.NULL_REASONER_ID);
defaultReasonerId = prefs.getString(DEFAULT_REASONER_ID, NoOpReasonerInfo.NULL_REASONER_ID);
}

public void save() {
Preferences prefs = getPreferences();
displayed.save(this);
precompute.save(prefs);
Preferences prefs = getPreferences();

displayed.save(this);
precompute.save(prefs);

prefs.putString(DEFAULT_REASONER_ID, defaultReasonerId);
}

public void addListener(ReasonerPreferencesListener listener) {
listeners.add(listener);
listeners.add(listener);
}

public void removeListener(ReasonerPreferencesListener listener) {
listeners.remove(listener);
listeners.remove(listener);
}

public void fireChanged() {
for (ReasonerPreferencesListener listener : listeners) {
listener.preferencesChanged();
}
for (ReasonerPreferencesListener listener : listeners) {
listener.preferencesChanged();
}
}





public Set<InferenceType> getPrecomputedInferences() {
return precompute.getPrecomputedInferences();
return precompute.getPrecomputedInferences();
}

public void requestPrecomputedInferences(String requestor, Set<InferenceType> types) {
precompute.requestPrecomputedInferences(requestor, types);
fireChanged();
}
precompute.requestPrecomputedInferences(requestor, types);
fireChanged();
}

public Set<String> getRequestors(InferenceType type) {
return precompute.getRequestors(type);
}
public Set<String> getRequestors(InferenceType type) {
return precompute.getRequestors(type);
}

public Set<InferenceType> getRequired() {
return precompute.getRequired();
}
public Set<InferenceType> getRequired() {
return precompute.getRequired();
}

public void setRequired(InferenceType type, boolean isRequired) {
precompute.setRequired(type, isRequired);
fireChanged();
}
public void setRequired(InferenceType type, boolean isRequired) {
precompute.setRequired(type, isRequired);
fireChanged();
}

public Set<InferenceType> getDisallowed() {
return precompute.getDisallowed();
}
public Set<InferenceType> getDisallowed() {
return precompute.getDisallowed();
}

public void setDisallowed(InferenceType type, boolean isDisallowed) {
precompute.setDisallowed(type, isDisallowed);
fireChanged();
}
public void setDisallowed(InferenceType type, boolean isDisallowed) {
precompute.setDisallowed(type, isDisallowed);
fireChanged();
}

public boolean isShowInferences() {
public boolean isShowInferences() {
return displayed.isShowInferences();
}

public void setShowInferences(boolean showInferences) {
displayed.setShowInferences(showInferences);
fireChanged();
fireChanged();
}

public void startClock(OptionalInferenceTask task) {
displayed.startClock(task);
displayed.startClock(task);
}

public void stopClock(OptionalInferenceTask task) {
displayed.stopClock(task);
displayed.stopClock(task);
}

public int getTimeInTask(OptionalInferenceTask task) {
return displayed.getTimeInTask(task);
return displayed.getTimeInTask(task);
}

public int getAverageTimeInTask(OptionalInferenceTask task) {
return displayed.getAverageTimeInTask(task);
return displayed.getAverageTimeInTask(task);
}

public boolean isEnabled(OptionalInferenceTask task) {
return displayed.isEnabled(task);
return displayed.isEnabled(task);
}

public void setEnabled(OptionalInferenceTask task, boolean enabled) {
displayed.setEnabled(task, enabled);
fireChanged();
displayed.setEnabled(task, enabled);
fireChanged();
}

public void executeTask(OptionalInferenceTask task, Runnable implementation) {
displayed.executeTask(task, implementation);
public void executeTask(OptionalInferenceTask task, Runnable implementation) {
displayed.executeTask(task, implementation);
}


Expand Down

0 comments on commit 5d825a6

Please sign in to comment.