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 <, looks ugly otherwise // pw.print( "^^" + "<" + dvdt.toString() + ">"); pw.print( "^^" + "<" + dvdt.toString() + ">"); else pw.print( "^^" + "<" + escape(dvdt) + ">"); } 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 + -
显示快捷键?