filtereddiff.java
来自「Semantic Web Ontology Editor」· Java 代码 · 共 85 行
JAVA
85 行
package org.mindswap.swoop.utils.owlapi.diff;import java.net.URI;import java.util.Iterator;import java.util.List;import java.util.Vector;import org.semanticweb.owl.model.OWLException;import org.semanticweb.owl.model.OWLOntology;import org.semanticweb.owl.model.change.ChangeVisitorAdapter;import org.semanticweb.owl.model.change.OntologyChange;import org.semanticweb.owl.model.change.RemoveDataType;import org.semanticweb.owl.model.change.RemoveEntity;import org.semanticweb.owl.model.change.RemoveIndividualClass;public class FilteredDiff extends ChangeVisitorAdapter { private boolean result; OWLOntology destination; OWLOntology source; OWLOntology target; private FilteredDiff(OWLOntology source, OWLOntology destination, OWLOntology target) throws OWLException { this.destination = destination; this.source = source; this.target = target; } /** * Diffs two ontologies, filtering out RemoveEntity and RemoveDataType changes. * @param source * @param dest * @param target * @return Filtered list of ontology changes. */ public static List getChanges(OWLOntology source, OWLOntology dest, OWLOntology target) throws OWLException { List diff = OWLDiff.getChanges(source, dest, target); List filtered = new Vector(); FilteredDiff fdiff = new FilteredDiff(source, dest, target); for (Iterator iter = diff.iterator(); iter.hasNext(); ) { OntologyChange change = (OntologyChange) iter.next(); fdiff.result = true; change.accept(fdiff); if (fdiff.result) { filtered.add(change); } } return filtered; } /* * Don't accept entity removal events (non-Javadoc) * @see org.semanticweb.owl.model.change.ChangeVisitor#visit(org.semanticweb.owl.model.change.RemoveEntity) */ public void visit(RemoveEntity event) throws OWLException { result = false; } /* * Don't accept datatype removal events (non-Javadoc) * @see org.semanticweb.owl.model.change.ChangeVisitor#visit(org.semanticweb.owl.model.change.RemoveDataType) */ public void visit(RemoveDataType event) throws OWLException { result = false; } /* * Ignore inividual's type remove if they are not in the destination ontology (non-Javadoc) * @see org.semanticweb.owl.model.change.ChangeVisitor#visit(org.semanticweb.owl.model.change.RemoveIndividualClass) */ public void visit(RemoveIndividualClass event) throws OWLException { URI indURI; if (event.getIndividual().isAnonymous()) { indURI = event.getIndividual().getAnonId(); } else { indURI = event.getIndividual().getURI(); } if (destination.getIndividual(indURI) == null) { result = false; } } }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?