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 + -
显示快捷键?