owlontbuilder.java

来自「Semantic Web Ontology Editor」· Java 代码 · 共 733 行 · 第 1/3 页

JAVA
733
字号
		OWLIndividual currentInd = null;
		if ((currentInd = currentOnt.getIndividual(ind.getURI()))==null) {
			// create a new individual
			if (ind.isAnonymous()) 
				currentInd = currentDF.getAnonOWLIndividual(ind.getAnonId());
			else 
				currentInd = currentDF.getOWLIndividual(ind.getURI());
			AddEntity ae = new AddEntity(currentOnt, currentInd, null);
			ae.accept((ChangeVisitor) currentOnt);
			this.changes.add(ae);
		}
		return currentInd;
	}
	
	
	public OWLObjectProperty visitObjectProperty( OWLObjectProperty prop ) throws OWLException {
		OWLObjectProperty currentOProp = null;
		if ((currentOProp = currentOnt.getObjectProperty(prop.getURI()))==null) {
			// create a new object property
			currentOProp = currentDF.getOWLObjectProperty(prop.getURI());
			AddEntity ae = new AddEntity(currentOnt, currentOProp, null);
			ae.accept((ChangeVisitor) currentOnt);
			this.changes.add(ae);
		}
		return currentOProp;
	}
	
	public OWLAnnotationProperty visitAnnotationProperty( OWLAnnotationProperty prop ) throws OWLException {
		OWLAnnotationProperty currentAProp = null;
		if ((currentAProp = currentOnt.getAnnotationProperty(prop.getURI()))==null) {
			// create a new annotation property
			currentAProp = currentDF.getOWLAnnotationProperty(prop.getURI());
			AddEntity ae = new AddEntity(currentOnt, currentAProp, null);
			ae.accept((ChangeVisitor) currentOnt);
			this.changes.add(ae);
		}
		return currentAProp;
	}
	
	public OWLDataProperty visitDataProperty( OWLDataProperty prop ) throws OWLException {
		OWLDataProperty currentDProp = null;
		if ((currentDProp = currentOnt.getDataProperty(prop.getURI()))==null) {
			// create a new data property
			currentDProp = currentDF.getOWLDataProperty(prop.getURI());
			AddEntity ae = new AddEntity(currentOnt, currentDProp, null);
			ae.accept((ChangeVisitor) currentOnt);
			this.changes.add(ae);
		}
		return currentDProp;
	}
	
	public OWLDataValue visitDataValue( OWLDataValue cd ) throws OWLException {
		return currentDF.getOWLConcreteData(cd.getURI(), cd.getLang(), cd.getValue());
	}

	public OWLDescription visitAnd( OWLAnd and ) throws OWLException {
		Set andSet = new HashSet();
		for ( Iterator it = and.getOperands().iterator();
		it.hasNext(); ) {
			OWLDescription desc = (OWLDescription) it.next();
			OWLDescription currentDesc = this.visitDescription(desc);
			andSet.add(currentDesc);
		}
		return currentDF.getOWLAnd(andSet);
	}

	public OWLDescription visitDescription(OWLDescription desc) throws OWLException {
		if (desc instanceof OWLClass) return visitClass((OWLClass) desc);
		else if (desc instanceof OWLAnd) return visitAnd((OWLAnd) desc);
		else if (desc instanceof OWLOr) return visitOr((OWLOr) desc);
		else if (desc instanceof OWLNot) return visitNot((OWLNot) desc);
		else if (desc instanceof OWLDataSomeRestriction) return visitDataSomeRestriction((OWLDataSomeRestriction) desc);
		else if (desc instanceof OWLDataAllRestriction) return visitDataAllRestriction((OWLDataAllRestriction) desc);
		else if (desc instanceof OWLDataValueRestriction) return visitDataValueRestriction((OWLDataValueRestriction) desc);
		else if (desc instanceof OWLObjectSomeRestriction) return visitObjectSomeRestriction((OWLObjectSomeRestriction) desc);
		else if (desc instanceof OWLObjectAllRestriction) return visitObjectAllRestriction((OWLObjectAllRestriction) desc);
		else if (desc instanceof OWLObjectValueRestriction) return visitObjectValueRestriction((OWLObjectValueRestriction) desc);
		else if (desc instanceof OWLDataCardinalityRestriction) return visitDataCardinalityRestriction((OWLDataCardinalityRestriction) desc);
		else if (desc instanceof OWLObjectCardinalityRestriction) return visitObjectCardinalityRestriction((OWLObjectCardinalityRestriction) desc);
		else if (desc instanceof OWLEnumeration) return visitEnumeration((OWLEnumeration) desc);
		return null;
	}
	
	public OWLDescription visitOr( OWLOr or ) throws OWLException {
		Set orSet = new HashSet();
		for ( Iterator it = or.getOperands().iterator();
		it.hasNext(); ) {
			OWLDescription desc = (OWLDescription) it.next();
			OWLDescription currentDesc = this.visitDescription(desc);
			orSet.add(currentDesc);
		}
		return currentDF.getOWLOr(orSet);
	}

	public OWLDescription visitNot( OWLNot not ) throws OWLException {
		OWLDescription desc = not.getOperand();
		OWLDescription currentDesc = this.visitDescription(desc);
		return currentDF.getOWLNot(currentDesc);
	}

	public OWLEnumeration visitEnumeration( OWLEnumeration enumeration ) throws OWLException {
		Set indSet = new HashSet();
		for ( Iterator it = enumeration.getIndividuals().iterator();
		it.hasNext(); ) {
			OWLIndividual ind = (OWLIndividual) it.next();
			indSet.add(this.visitIndividual(ind));
		}
		return currentDF.getOWLEnumeration(indSet);
	}

	public OWLDescription visitObjectSomeRestriction( OWLObjectSomeRestriction restriction ) throws OWLException {		
		OWLObjectProperty prop = this.visitObjectProperty(restriction.getObjectProperty());
		OWLDescription currentDesc = this.visitDescription(restriction.getDescription());
		return currentDF.getOWLObjectSomeRestriction(prop, currentDesc);
	}

	public OWLDescription visitObjectAllRestriction( OWLObjectAllRestriction restriction ) throws OWLException {
		OWLObjectProperty prop = this.visitObjectProperty(restriction.getObjectProperty());
		OWLDescription currentDesc = this.visitDescription(restriction.getDescription());
		return currentDF.getOWLObjectAllRestriction(prop, currentDesc);		
	}

	public OWLDescription visitObjectValueRestriction( OWLObjectValueRestriction restriction ) throws OWLException {
		OWLObjectProperty prop = this.visitObjectProperty(restriction.getObjectProperty());
		OWLIndividual currentInd = this.visitIndividual(restriction.getIndividual());
		return currentDF.getOWLObjectValueRestriction(prop, currentInd);
	}

	public OWLDescription visitDataSomeRestriction( OWLDataSomeRestriction restriction ) throws OWLException {
		OWLDataProperty prop = this.visitDataProperty(restriction.getDataProperty());
		OWLDataType dRange = this.visitDataType((OWLDataType) restriction.getDataType());
		return currentDF.getOWLDataSomeRestriction(prop, dRange);
	}

	public OWLDescription visitDataAllRestriction( OWLDataAllRestriction restriction ) throws OWLException {
		OWLDataProperty prop = this.visitDataProperty(restriction.getDataProperty());
		OWLDataType dRange = this.visitDataType((OWLDataType) restriction.getDataType());
		return currentDF.getOWLDataAllRestriction(prop, dRange);
	}

	public OWLDescription visitObjectCardinalityRestriction( OWLObjectCardinalityRestriction restriction ) throws OWLException {
		OWLObjectProperty prop = this.visitObjectProperty(restriction.getObjectProperty());
		return currentDF.getOWLObjectCardinalityRestriction(prop, restriction.getAtLeast(), restriction.getAtMost());
	}

	public OWLDescription visitDataCardinalityRestriction( OWLDataCardinalityRestriction restriction ) throws OWLException {
		OWLDataProperty prop = this.visitDataProperty(restriction.getDataProperty());
		return currentDF.getOWLDataCardinalityRestriction(prop, restriction.getAtLeast(), restriction.getAtMost());
	}

	public OWLDescription visitDataValueRestriction( OWLDataValueRestriction restriction ) throws OWLException {
		OWLDataProperty prop = this.visitDataProperty(restriction.getDataProperty());
		return currentDF.getOWLDataValueRestriction(prop, restriction.getValue());		
	}

	public void visit( OWLEquivalentClassesAxiom axiom ) throws OWLException {

		Set equClas = axiom.getEquivalentClasses();
		Set alignEQ = new HashSet();
		for ( Iterator it = equClas.iterator(); it.hasNext(); ) {
			OWLDescription desc = (OWLDescription) it.next();
			OWLDescription currentDesc = this.visitDescription(desc);
			alignEQ.add(currentDesc);
		}
		
		OWLClassAxiom currentObject = currentDF.getOWLEquivalentClassesAxiom(alignEQ);
		
		OntologyChange acx = null;
		if (addAxiom) {
			acx = new AddClassAxiom(currentOnt, (OWLClassAxiom) currentObject, null);
			acx.accept((ChangeVisitor) currentOnt);
			this.changes.add(acx);
		}
		else {
			acx = new RemoveClassAxiom(currentOnt, (OWLClassAxiom) currentObject, null);
			// remove equivalent class
			acx.accept((ChangeVisitor) currentOnt);
			OWLDescription cla1 = (OWLDescription) alignEQ.iterator().next();
			alignEQ.remove(cla1);
			OWLDescription cla2 = (OWLDescription) alignEQ.iterator().next();
			if (cla1 instanceof OWLClass) {
				acx = new RemoveEquivalentClass(currentOnt, (OWLClass) cla1, cla2, null);
				acx.accept((ChangeVisitor) currentOnt);
				this.changes.add(acx);
			}
			if (cla2 instanceof OWLClass) {
				acx = new RemoveEquivalentClass(currentOnt, (OWLClass) cla2, cla1, null);
				acx.accept((ChangeVisitor) currentOnt);
				this.changes.add(acx);
			}
		}
		
	}

	public void visit( OWLDisjointClassesAxiom axiom ) throws OWLException {
		
		Set alignDI = new HashSet();
		for ( Iterator it = axiom.getDisjointClasses().iterator();
		it.hasNext(); ) {
			OWLDescription desc = (OWLDescription) it.next();
			OWLDescription currentDesc = this.visitDescription(desc);
			// alignDesc has now been updated
			alignDI.add(currentDesc);
		}
		OWLClassAxiom currentObject = currentDF.getOWLDisjointClassesAxiom(alignDI);
		OntologyChange acx = null;
		if (addAxiom)
			acx = new AddClassAxiom(currentOnt, (OWLClassAxiom) currentObject, null);
		else 
			acx = new RemoveClassAxiom(currentOnt, (OWLClassAxiom) currentObject, null);
		acx.accept((ChangeVisitor) currentOnt);
		this.changes.add(acx);
	}

	public void visit( OWLSubClassAxiom axiom ) throws OWLException {
		OWLClassAxiom currentObject = currentDF.getOWLSubClassAxiom(this.visitDescription(axiom.getSubClass()), this.visitDescription(axiom.getSuperClass()));
		OntologyChange acx = null;
		if (addAxiom) {
			acx = new AddClassAxiom(currentOnt, (OWLClassAxiom) currentObject, null);
			this.changes.add(acx);
		}
		else {
			acx = new RemoveClassAxiom(currentOnt, (OWLClassAxiom) currentObject, null);
			// also remove superclass assertion
			OWLSubClassAxiom subAx = (OWLSubClassAxiom) currentObject;
			OWLDescription sub = subAx.getSubClass();
			OWLDescription sup = subAx.getSuperClass();
			if (sub instanceof OWLClass) {
				RemoveSuperClass rsc = new RemoveSuperClass(currentOnt, currentOnt.getClass(((OWLClass) sub).getURI()), sup, null);
				rsc.accept((ChangeVisitor) currentOnt);
				this.changes.add(rsc);
			}
		}
		acx.accept((ChangeVisitor) currentOnt);		
	}

	public void visit( OWLEquivalentPropertiesAxiom axiom ) throws OWLException {
		
		Set alignEP = new HashSet();
		for ( Iterator it = axiom.getProperties().iterator();
		it.hasNext(); ) {
			OWLProperty prop = (OWLProperty) it.next();
			if (prop instanceof OWLDataProperty)
				alignEP.add(this.visitDataProperty((OWLDataProperty) prop));
			else 

⌨️ 快捷键说明

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