abstractsyntaxentityrenderer.java

来自「Semantic Web Ontology Editor」· Java 代码 · 共 1,981 行 · 第 1/5 页

JAVA
1,981
字号
//The MIT License//// Copyright (c) 2004 Mindswap Research Group, University of Maryland, College Park//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions://// The above copyright notice and this permission notice shall be included in// all copies or substantial portions of the Software.//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS// IN THE SOFTWARE.package org.mindswap.swoop.renderer.entity;import java.awt.Component;import java.awt.Font;import java.io.PrintWriter;import java.io.StringWriter;import java.io.Writer;import java.net.URI;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import javax.swing.JEditorPane;import org.mindswap.swoop.SwoopDisplayPanel;import org.mindswap.swoop.SwoopModel;import org.mindswap.swoop.TermsDisplay;import org.mindswap.swoop.renderer.BaseEntityRenderer;import org.mindswap.swoop.renderer.SwoopEditableRenderer;import org.mindswap.swoop.renderer.SwoopEntityRenderer;import org.mindswap.swoop.renderer.SwoopRenderingVisitor;import org.mindswap.swoop.utils.RuleValue;import org.mindswap.swoop.utils.owlapi.QNameShortFormProvider;import org.semanticweb.owl.io.RendererException;import org.semanticweb.owl.io.ShortFormProvider;import org.semanticweb.owl.io.abstract_syntax.Renderer;import org.semanticweb.owl.model.OWLAnd;import org.semanticweb.owl.model.OWLAnnotationInstance;import org.semanticweb.owl.model.OWLAnnotationProperty;import org.semanticweb.owl.model.OWLClass;import org.semanticweb.owl.model.OWLClassAxiom;import org.semanticweb.owl.model.OWLDataAllRestriction;import org.semanticweb.owl.model.OWLDataCardinalityRestriction;import org.semanticweb.owl.model.OWLDataEnumeration;import org.semanticweb.owl.model.OWLDataProperty;import org.semanticweb.owl.model.OWLDataPropertyInstance;import org.semanticweb.owl.model.OWLDataPropertyRangeAxiom;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.OWLDifferentIndividualsAxiom;import org.semanticweb.owl.model.OWLDisjointClassesAxiom;import org.semanticweb.owl.model.OWLEntity;import org.semanticweb.owl.model.OWLEnumeration;import org.semanticweb.owl.model.OWLEquivalentClassesAxiom;import org.semanticweb.owl.model.OWLEquivalentPropertiesAxiom;import org.semanticweb.owl.model.OWLException;import org.semanticweb.owl.model.OWLFrame;import org.semanticweb.owl.model.OWLFunctionalPropertyAxiom;import org.semanticweb.owl.model.OWLIndividual;import org.semanticweb.owl.model.OWLIndividualTypeAssertion;import org.semanticweb.owl.model.OWLInverseFunctionalPropertyAxiom;import org.semanticweb.owl.model.OWLInversePropertyAxiom;import org.semanticweb.owl.model.OWLNamedObject;import org.semanticweb.owl.model.OWLNot;import org.semanticweb.owl.model.OWLObjectAllRestriction;import org.semanticweb.owl.model.OWLObjectCardinalityRestriction;import org.semanticweb.owl.model.OWLObjectProperty;import org.semanticweb.owl.model.OWLObjectPropertyInstance;import org.semanticweb.owl.model.OWLObjectPropertyRangeAxiom;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.OWLProperty;import org.semanticweb.owl.model.OWLPropertyAxiom;import org.semanticweb.owl.model.OWLPropertyDomainAxiom;import org.semanticweb.owl.model.OWLSameIndividualsAxiom;import org.semanticweb.owl.model.OWLSubClassAxiom;import org.semanticweb.owl.model.OWLSubPropertyAxiom;import org.semanticweb.owl.model.OWLSymmetricPropertyAxiom;import org.semanticweb.owl.model.OWLTransitivePropertyAxiom;import org.semanticweb.owl.rules.OWLRule;import org.semanticweb.owl.rules.OWLRuleAtom;import org.semanticweb.owl.rules.OWLRuleClassAtom;import org.semanticweb.owl.rules.OWLRuleDObject;import org.semanticweb.owl.rules.OWLRuleDVariable;import org.semanticweb.owl.rules.OWLRuleDataPropertyAtom;import org.semanticweb.owl.rules.OWLRuleDataValue;import org.semanticweb.owl.rules.OWLRuleEqualityAtom;import org.semanticweb.owl.rules.OWLRuleIObject;import org.semanticweb.owl.rules.OWLRuleIVariable;import org.semanticweb.owl.rules.OWLRuleIndividual;import org.semanticweb.owl.rules.OWLRuleInequalityAtom;import org.semanticweb.owl.rules.OWLRuleObjectPropertyAtom;import org.semanticweb.owl.model.helper.OntologyHelper;/** * @author Evren Sirin */ //public class AbstractSyntaxEntityRenderer extends BaseEntityRenderer implements SwoopEditableRenderer, SwoopEntityRenderer {public class AbstractSyntaxEntityRenderer extends BaseEntityRenderer implements SwoopEntityRenderer {	private String contentType = "text/html";	String INDENT="";	String TAB = "   ";	public QNameShortFormProvider qnameProvider;	protected String baseURI;	protected Set allURIs;	private List shortNames;	private Map known;	private int reservedNames;			class AbstractSyntaxVisitor implements org.mindswap.swoop.renderer.SwoopRenderingVisitor {				ShortFormProvider shortForms; 		boolean indenting = true;		StringWriter sw;		PrintWriter pw;		boolean noLinks;						/**		 * @param shortForms		 * @param ontology		 */		public AbstractSyntaxVisitor(ShortFormProvider shortForms, boolean noLinks) {			this.shortForms = shortForms;			this.noLinks = noLinks;			reset();		}				public String escape(Object o) {			if (noLinks) {				return o.toString();			}			return AbstractSyntaxEntityRenderer.escape(o);		}				public String result() {			return sw.toString();		}		public void reset() {			sw = new StringWriter();			pw = new PrintWriter( sw );		}				public void visit( OWLDataValue cd ) throws OWLException {								pw.print(" \"" + escape( cd.getValue() ) + "\"");			/* Only show it if it's not string */			URI dvdt = cd.getURI();			String dvlang = cd.getLang();			if ( dvdt!=null) {				if (noLinks)					// hm... have to render < as &lt;, looks ugly otherwise					// pw.print( "^^" + "<" + dvdt.toString() + ">");					pw.print( "^^" + "<" + dvdt.toString() + ">");				else					pw.print( "^^" + "&lt;" + escape(dvdt) + "&gt;");			} else {				if (dvlang!=null) {					pw.print( "@" + escape(dvlang) );				}			}		}		public void visit( OWLAnd and ) throws OWLException {					pw.print(INDENT + "intersectionOf(\n");			increaseINDENT();			for ( Iterator it = and.getOperands().iterator();it.hasNext(); ) {				OWLDescription desc = (OWLDescription) it.next();				// pw.print(INDENT);								desc.accept( this );				if (it.hasNext()) {					pw.print("\n");				}			}			decreaseINDENT();			pw.print("\n" + INDENT + ")");		}		public void visit( OWLOr or ) throws OWLException {						pw.print(INDENT + "unionOf(\n");			increaseINDENT();			for ( Iterator it = or.getOperands().iterator();			it.hasNext(); ) {				OWLDescription desc = (OWLDescription) it.next();				// pw.print (INDENT);				desc.accept( this );				if (it.hasNext()) {					pw.print("\n");				}			}			decreaseINDENT();			pw.print("\n" + INDENT + ")");		}		public void visit( OWLNot not ) throws OWLException {			pw.print(INDENT + "complementOf(\n");			increaseINDENT();			OWLDescription desc = not.getOperand();			// pw.print(INDENT);			desc.accept( this );			decreaseINDENT();			pw.print("\n" + INDENT + ")");		}		public void visit( OWLEnumeration enumeration ) throws OWLException {			pw.print(INDENT + "oneOf(");			for ( Iterator it = enumeration.getIndividuals().iterator();			it.hasNext(); ) {				OWLIndividual desc = (OWLIndividual) it.next();				desc.accept( this );				if (it.hasNext()) {					pw.print(" ");				}			}			pw.print(")");		}		public void visit( OWLObjectSomeRestriction restriction ) throws OWLException {			pw.print(INDENT + "restriction(");			restriction.getObjectProperty().accept( this );			pw.print(" someValuesFrom(");			//******************************************************			//Changed for Econnections			//******************************************************			if(restriction.getObjectProperty().isLink()){				pw.print(" ForeignClass(");				pw.print(" foreignOntology(" + shortForm(restriction.getObjectProperty().getLinkTarget()) + ")");								restriction.getDescription().accept( this );				pw.print(")");			}			else{				restriction.getDescription().accept( this );}									//**************************************			pw.print("))");		}		public void visit( OWLObjectAllRestriction restriction ) throws OWLException {			pw.print(INDENT + "restriction(");			restriction.getObjectProperty().accept( this );			pw.print(" allValuesFrom(");            			//******************************************************			//Changed for Econnections			//******************************************************						if(restriction.getObjectProperty().isLink()){				pw.print(" ForeignClass(");				pw.print(" foreignOntology(" + shortForm(restriction.getObjectProperty().getLinkTarget()) + ")");				restriction.getDescription().accept( this );				pw.print(")");			}			else{				   					restriction.getDescription().accept( this );}			pw.print("))");		}		public void visit( OWLObjectValueRestriction restriction ) throws OWLException {			pw.print(INDENT + "restriction(");			restriction.getObjectProperty().accept( this );			/* Changed from hasValue */			pw.print(" value (");			//******************************************************			//Changed for Econnections			//******************************************************						if(restriction.getObjectProperty().isLink()){				pw.print(" ForeignIndividual(");				pw.print(" foreignOntology(" + shortForm(restriction.getObjectProperty().getLinkTarget()) + ")");				restriction.getIndividual().accept( this );				pw.print(")");			}			else{				   						restriction.getIndividual().accept( this );}						   pw.print("))");		}		public void visit( OWLDataSomeRestriction restriction ) throws OWLException {			pw.print(INDENT + "restriction(");			restriction.getDataProperty().accept( this );			pw.print(" someValuesFrom (");			restriction.getDataType().accept( this );			pw.print("))");		}		public void visit( OWLDataAllRestriction restriction ) throws OWLException {			pw.print(INDENT + "restriction(");			restriction.getDataProperty().accept( this );			pw.print(" allValuesFrom(");			restriction.getDataType().accept( this );			pw.print("))");		}		public void visit( OWLObjectCardinalityRestriction restriction ) throws OWLException {			pw.print(INDENT +"restriction(");			restriction.getObjectProperty().accept( this );			if ( restriction.isExactly() ) {				pw.print(" cardinality(" + restriction.getAtLeast() + "))");			} else if ( restriction.isAtMost() ) {				pw.print(" maxCardinality(" + restriction.getAtMost() + "))");			} else 	if ( restriction.isAtLeast() ) {				pw.print(" minCardinality(" + restriction.getAtLeast() + "))");			} 		}		public void visit( OWLDataCardinalityRestriction restriction ) throws OWLException {			pw.print(INDENT +"restriction(");			restriction.getDataProperty().accept( this );			if ( restriction.isExactly() ) {				pw.print(" cardinality(" + restriction.getAtLeast() + "))");			} else if ( restriction.isAtMost() ) {				pw.print(" maxCardinality(" + restriction.getAtMost() + "))");			} else 	if ( restriction.isAtLeast() ) {				pw.print(" minCardinality(" + restriction.getAtLeast() + "))");			} 		}		public void visit( OWLDataValueRestriction restriction ) throws OWLException {			pw.print(INDENT + "restriction(");			restriction.getDataProperty().accept( this );			/* Changed from hasValue */			pw.print(" value (");			restriction.getValue().accept( this );			pw.print("))");		}		public void visit( OWLEquivalentClassesAxiom axiom ) throws OWLException {			pw.print("EquivalentClasses(");			for ( Iterator it = axiom.getEquivalentClasses().iterator();			it.hasNext(); ) {				OWLDescription desc = (OWLDescription) it.next();				desc.accept( this );				if (it.hasNext()) {					pw.print(" ");				}			}			pw.print(")");		}		public void visit( OWLDisjointClassesAxiom axiom ) throws OWLException {			pw.print("DisjointClasses(");			for ( Iterator it = axiom.getDisjointClasses().iterator();			it.hasNext(); ) {				OWLDescription desc = (OWLDescription) it.next();				desc.accept( this );				if (it.hasNext()) {					pw.print(" ");				}			}			pw.print(")");		}		public void visit( OWLSubClassAxiom axiom ) throws OWLException {			pw.print("SubClassOf(");			axiom.getSubClass().accept( this );			pw.print(" ");			axiom.getSuperClass().accept( this );			pw.print(")");		}		public void visit( OWLEquivalentPropertiesAxiom axiom ) throws OWLException {			pw.print("EquivalentProperties(");			for ( Iterator it = axiom.getProperties().iterator();			it.hasNext(); ) {				OWLProperty prop = (OWLProperty) it.next();				prop.accept( this );				if (it.hasNext()) {					pw.print(" ");				}

⌨️ 快捷键说明

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