owlcopy.java

来自「Semantic Web Ontology Editor」· Java 代码 · 共 269 行

JAVA
269
字号
package org.mindswap.swoop.utils.owlapi.diff;import java.util.HashSet;import java.util.Iterator;import java.util.Set;import org.semanticweb.owl.model.OWLAnd;import org.semanticweb.owl.model.OWLAnnotationProperty;import org.semanticweb.owl.model.OWLClass;import org.semanticweb.owl.model.OWLDataAllRestriction;import org.semanticweb.owl.model.OWLDataCardinalityRestriction;import org.semanticweb.owl.model.OWLDataEnumeration;import org.semanticweb.owl.model.OWLDataFactory;import org.semanticweb.owl.model.OWLDataProperty;import org.semanticweb.owl.model.OWLDataRange;import org.semanticweb.owl.model.OWLDataSomeRestriction;import org.semanticweb.owl.model.OWLDataType;import org.semanticweb.owl.model.OWLDataValue;import org.semanticweb.owl.model.OWLDataValueRestriction;import org.semanticweb.owl.model.OWLDescription;import org.semanticweb.owl.model.OWLDescriptionVisitor;import org.semanticweb.owl.model.OWLEntity;import org.semanticweb.owl.model.OWLEntityVisitor;import org.semanticweb.owl.model.OWLEnumeration;import org.semanticweb.owl.model.OWLException;import org.semanticweb.owl.model.OWLFrame;import org.semanticweb.owl.model.OWLIndividual;import org.semanticweb.owl.model.OWLNot;import org.semanticweb.owl.model.OWLObject;import org.semanticweb.owl.model.OWLObjectAllRestriction;import org.semanticweb.owl.model.OWLObjectCardinalityRestriction;import org.semanticweb.owl.model.OWLObjectProperty;import org.semanticweb.owl.model.OWLObjectSomeRestriction;import org.semanticweb.owl.model.OWLObjectValueRestriction;import org.semanticweb.owl.model.OWLOntology;import org.semanticweb.owl.model.OWLOr;import org.semanticweb.owl.model.OWLRestriction;/** * Copies an OWLObject from one ontology with respect to another. * @author ronwalf * */public class OWLCopy implements OWLDescriptionVisitor, OWLEntityVisitor {	private OWLDataFactory factory;	private OWLOntology source;	private OWLOntology destination;	private OWLObject value;		public OWLCopy(OWLOntology source, OWLOntology destination) throws OWLException {		this.source = source;		this.destination = destination;		factory = destination.getOWLDataFactory();			}		/**	 * Return a copy of the given OWLDescription from the source ontology with respect to	 * the destination ontology.	 * 	 * The copy will not include axiom information.	 * 	 * @param source - The ontology the desription is from.	 * @param destination - The ontology where the copy will be made against.	 * @param description 	 * @return A copy of the description.	 * @throws OWLException	 */	public static OWLDescription copy(OWLOntology source, OWLOntology destination, OWLDescription description) throws OWLException {		OWLCopy copier = new OWLCopy(source, destination);		description.accept(copier);		return (OWLDescription) copier.value;	}		/**	 * Return a copy of the given OWLEntity from the source ontology with respect to	 * the destination ontology.	 * 	 * The copy will not include axiom or property information.	 * 	 * @param source - The ontology the desription is from.	 * @param destination - The ontology where the copy will be made against.	 * @param description 	 * @return A copy of the entity.	 * @throws OWLException	 */	public static OWLEntity copy(OWLOntology source, OWLOntology destination, OWLEntity description) throws OWLException {		OWLCopy copier = new OWLCopy(source, destination);		description.accept(copier);		return (OWLEntity) copier.value;	}		public OWLDescription copy(OWLDescription description) throws OWLException {		OWLCopy copier = new OWLCopy(source, destination);		description.accept(copier);		return (OWLDescription) copier.value;	}		public OWLEntity copy(OWLEntity entity) throws OWLException {		OWLCopy copier = new OWLCopy(source, destination);		entity.accept(copier);		return (OWLEntity) copier.value;	}			public OWLDataRange copyDataRange(OWLDataRange dataRange) throws OWLException {		OWLDataRange result;		if (dataRange instanceof OWLDataType) {			OWLDataType dataType = (OWLDataType) dataRange;			result = factory.getOWLConcreteDataType(dataType.getURI());		} else if (dataRange instanceof OWLDataEnumeration) {			OWLDataEnumeration dataEnum = (OWLDataEnumeration) dataRange;			Set values = new HashSet();			for (Iterator iter = dataEnum.getValues().iterator(); iter.hasNext();) {				OWLDataValue dv = (OWLDataValue) iter.next();				values.add(factory.getOWLConcreteData(dv.getURI(), dv.getLang(), dv.getValue()));			}			result = factory.getOWLDataEnumeration(values);		} else {			throw new OWLException("Can't hand OWLDataRange of type "+dataRange.getClass());				}		return result;	}	public void visit(OWLAnd node) throws OWLException {		Set parts = new HashSet();		for (Iterator iter = node.getOperands().iterator(); iter.hasNext(); ) {			parts.add(copy((OWLDescription) iter.next()));		}		value =  factory.getOWLAnd(parts);	}	public void visit(OWLDataAllRestriction node) throws OWLException {		OWLDataProperty dstProp = factory.getOWLDataProperty(node.getProperty().getURI());		OWLDataRange srcDT = copyDataRange(node.getDataType());				value = factory.getOWLDataAllRestriction(dstProp, copyDataRange(srcDT));	}	public void visit(OWLDataCardinalityRestriction node) throws OWLException {		OWLDataProperty dstProp = factory.getOWLDataProperty(node.getProperty().getURI());		int min = node.getAtLeast();		int max = node.getAtMost();				value = factory.getOWLDataCardinalityRestriction(dstProp, min, max);	}	public void visit(OWLDataSomeRestriction node) throws OWLException {		OWLDataProperty dstProp = factory.getOWLDataProperty(node.getProperty().getURI());		OWLDataRange dstRange = copyDataRange(node.getDataType());				value = factory.getOWLDataSomeRestriction(dstProp, dstRange);	}	public void visit(OWLDataValueRestriction node) throws OWLException {		OWLDataProperty dstProp = factory.getOWLDataProperty(node.getProperty().getURI());		OWLDataValue srcValue = node.getValue();		OWLDataValue dstValue = factory.getOWLConcreteData(srcValue.getURI(), srcValue.getLang(), srcValue.getValue());				value = factory.getOWLDataValueRestriction(dstProp, dstValue);	}	public void visit(OWLFrame node) throws OWLException {		Set superClasses = new HashSet();		Set restrictions = new HashSet();				for (Iterator iter = node.getSuperclasses().iterator(); iter.hasNext(); ) {			superClasses.add(copy(source, destination, (OWLDescription) iter.next()));		}		for (Iterator iter = node.getRestrictions().iterator(); iter.hasNext(); ) {			restrictions.add(copy(source, destination, (OWLRestriction) iter.next()));		}		value = factory.getOWLFrame(superClasses, restrictions);	}	public void visit(OWLObjectAllRestriction node) throws OWLException {		OWLObjectProperty dstProp = factory.getOWLObjectProperty(node.getProperty().getURI());		OWLDescription description = copy(node.getDescription());				value = factory.getOWLObjectAllRestriction(dstProp, description);	}	public void visit(OWLObjectCardinalityRestriction node) throws OWLException {		OWLObjectProperty dstProp = factory.getOWLObjectProperty(node.getProperty().getURI());		int min = node.getAtLeast();		int max = node.getAtMost();				value = factory.getOWLObjectCardinalityRestriction(dstProp, min, max);	}	public void visit(OWLObjectSomeRestriction node) throws OWLException {		OWLObjectProperty dstProp = factory.getOWLObjectProperty(node.getProperty().getURI());		OWLDescription description = copy(node.getDescription());				value = factory.getOWLObjectSomeRestriction(dstProp, description);	}	public void visit(OWLObjectValueRestriction node) throws OWLException {		OWLObjectProperty dstProp = factory.getOWLObjectProperty(node.getProperty().getURI());		OWLIndividual srcInd = node.getIndividual();		OWLIndividual dstInd;		if (srcInd.isAnonymous()) {			dstInd = factory.getAnonOWLIndividual(srcInd.getAnonId());		} else {			dstInd = factory.getOWLIndividual(srcInd.getURI());		}				value = factory.getOWLObjectValueRestriction(dstProp, dstInd);	}	public void visit(OWLNot node) throws OWLException {		value = factory.getOWLNot(copy(node.getOperand()));	}	public void visit(OWLOr node) throws OWLException {		Set parts = new HashSet();		for (Iterator iter = node.getOperands().iterator(); iter.hasNext(); ) {			parts.add(copy(source, destination, (OWLDescription) iter.next()));		}		value =  factory.getOWLOr(parts);	}	public void visit(OWLClass node) throws OWLException {		value = factory.getOWLClass(node.getURI());	}	public void visit(OWLEnumeration node) throws OWLException {		Set parts = new HashSet();		for (Iterator iter = node.getIndividuals().iterator(); iter.hasNext(); ) {			OWLIndividual srcInd = (OWLIndividual) iter.next();			OWLIndividual dstInd;			if (srcInd.isAnonymous()) {				dstInd = factory.getAnonOWLIndividual(srcInd.getAnonId());			} else {				dstInd = factory.getOWLIndividual(srcInd.getURI());			}			parts.add(dstInd);		}		value =  factory.getOWLEnumeration(parts);	}	public void visit(OWLDataProperty entity) throws OWLException {		value = factory.getOWLDataProperty(entity.getURI());	}	public void visit(OWLObjectProperty entity) throws OWLException {		value = factory.getOWLObjectProperty(entity.getURI());	}	public void visit(OWLAnnotationProperty entity) throws OWLException {		value = factory.getOWLAnnotationProperty(entity.getURI());	}	public void visit(OWLIndividual entity) throws OWLException {		if (entity.isAnonymous()) {			value = factory.getAnonOWLIndividual(entity.getAnonId());		} else {			value = factory.getOWLIndividual(entity.getURI());		}	}	}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?