swoopontologyinfo.java

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

JAVA
936
字号
//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.ontology;import java.awt.Component;import java.io.PrintWriter;import java.io.StringWriter;import java.io.Writer;import java.net.URI;import java.net.URISyntaxException;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import java.util.TreeSet;import org.mindswap.pellet.debug.owlapi.Reasoner;import org.mindswap.swoop.OntologyDisplay;import org.mindswap.swoop.SwoopDisplayPanel;import org.mindswap.swoop.SwoopModel;import org.mindswap.swoop.utils.RulesExpressivity;import org.mindswap.swoop.reasoner.PelletReasoner;import org.mindswap.swoop.reasoner.SwoopReasoner;import org.mindswap.swoop.renderer.SwoopEditableRenderer;import org.mindswap.swoop.renderer.SwoopOntologyRenderer;import org.mindswap.swoop.renderer.entity.ConciseFormatEntityRenderer;import org.mindswap.swoop.utils.SwoopStatistics;import org.mindswap.swoop.utils.ui.EntityComparator;import org.semanticweb.owl.model.OWLAnnotationInstance;import org.semanticweb.owl.model.OWLAnnotationProperty;import org.semanticweb.owl.model.OWLClass;import org.semanticweb.owl.model.OWLDataValue;import org.semanticweb.owl.model.OWLEntity;import org.semanticweb.owl.model.OWLException;import org.semanticweb.owl.model.OWLIndividual;import org.semanticweb.owl.model.OWLObject;import org.semanticweb.owl.model.OWLObjectProperty;import org.semanticweb.owl.model.OWLOntology;import org.semanticweb.owl.model.OWLProperty;import org.semanticweb.owl.model.change.AddAnnotationInstance;import org.semanticweb.owl.model.change.AddImport;import org.semanticweb.owl.model.change.OntologyChange;import org.semanticweb.owl.model.change.RemoveAnnotationInstance;import org.semanticweb.owl.model.change.RemoveImport;/** * @author Evren Sirin */public class SwoopOntologyInfo extends BaseOntologyRenderer implements SwoopOntologyRenderer, SwoopEditableRenderer {	    private boolean editorEnabled = false;    final public static int SHOW_INDIVIDUALS    = 1;	final public static int SHOW_CLASSES        = 2;	final public static int SHOW_PROPERTIES     = 3;	final public static int SHOW_DATAPROPERTIES = 4;	final public static int SHOW_OBJPROPERTIES  = 5;	final String NEWLINE = System.getProperty("line.separator");	final String HLINE = "--------------------------------------------------"+NEWLINE;	public String statsText = "";		public Map OWLObjectHash;	SwoopModel swoopModel;	PrintWriter out;		/**	 * Print the added "import ontology" changes (currently in swoopModel uncommitted changes)	 * @param ont	 */    private void printAddedImports(OWLOntology ont) {        String addImports = "";        try {            List changes = swoopModel.getUncommittedChanges();            Iterator iter = changes.iterator();            while(iter.hasNext()) {                OntologyChange change = (OntologyChange) iter.next();                if(change instanceof AddImport) {                    AddImport add = (AddImport) change;                    if(add.getOntology().getURI().equals(ont.getURI())) {                        OWLOntology impOnt = add.getImportOntology();                        out.print("<br><font color=\"green\">");	                    out.print("<a href=\"" + impOnt.getURI().toString() + "\">"+ impOnt.getURI() + "</a>");                        out.print("</font>");                        this.addUndo(add, "Delete");                    }                }            }        }         catch(Exception ex) {            ex.printStackTrace();        }    }    /**     * Check if a RemoveImport change in swoopModel.uncommittedChanges()     * matches the subj, obj arguments passed to iw     * @param subj     * @param obj     * @return     */    private OntologyChange isDeleted(OWLOntology subj, OWLOntology obj) {        // isDeleted function for Imported Ontologies        List changes = swoopModel.getUncommittedChanges();        Iterator i = changes.iterator();        while(i.hasNext()) {            OntologyChange oc = (OntologyChange) i.next();            if(oc instanceof RemoveImport) {                RemoveImport rem = (RemoveImport) oc;                if(rem.getOntology().equals(subj)                        && (rem.getImportOntology().equals(obj))) return oc;            }        }        return null;    }    public String getContentType() {        return "text/html";    }    public String getName() {        return "Ontology Info";    }    // display stats in ont pane    public void showStatistics(OWLOntology ont, PrintWriter statistics) {            	statistics.print("<FONT FACE=\""+swoopModel.getFontFace()+"\" SIZE="+swoopModel.getFontSize()+">");    	    	int numberOfClasses, numberOfObjectProperties=0, numberOfDatatypeProperties, numberOfAnnotationProperties, numberOfInstances;        int totalClasses=0, totalObjProps=0, totalDataProps=0, totalAnnotatedProps=0, totalIndividuals=0;        //*******************************************        //Added for Econnections        //*******************************************        int numberOfLinkProperties=0, numberOfForeignEntities=0;        int numberOfForeignClasses=0, numberOfForeignProperties=0, numberOfForeignIndividuals=0;        //********************************************        try {            //statistics.println("<br><b> ONTOLOGY STATISTICS </b><br>");            numberOfClasses = ont.getClasses().size();            numberOfDatatypeProperties = ont.getDataProperties().size();            //***********************************************************            //Added for Econnections            //*************************************************************            Iterator it= ont.getObjectProperties().iterator();            Set foreignOntologies = new HashSet();            while(it.hasNext()){            	OWLObjectProperty property=(OWLObjectProperty)it.next();            	if(property.isLink() && !(property.getLinkTarget()).equals(ont.getURI())){            		numberOfLinkProperties++;            		foreignOntologies.add(property.getLinkTarget());             	}            	else{            		numberOfObjectProperties++;            	}            }            //numberOfObjectProperties = ont.getObjectProperties().size();            numberOfForeignEntities = ont.getForeignEntities().size();            Iterator j= ont.getForeignEntities().keySet().iterator();            while(j.hasNext()){            	OWLEntity e = (OWLEntity)j.next();            	if(e instanceof OWLClass)            		numberOfForeignClasses++;            	if(e instanceof OWLProperty)            		numberOfForeignProperties++;            	if(e instanceof OWLIndividual)            		numberOfForeignIndividuals++;            	            }            //************************************************************            numberOfAnnotationProperties = ont.getAnnotationProperties().size();            numberOfInstances = ont.getIndividuals().size();                        // get imported ontology statistics                        totalClasses = swoopModel.getEntitySet(ont, swoopModel.TRANSCLOSE_ONT, this.SHOW_CLASSES).size();            //*****************************************************            //Changed for Econnections            //*****************************************************            totalObjProps = swoopModel.getEntitySet(ont, swoopModel.TRANSCLOSE_ONT, this.SHOW_OBJPROPERTIES).size()-numberOfLinkProperties;            //***************************************************            totalDataProps = swoopModel.getEntitySet(ont, swoopModel.TRANSCLOSE_ONT, this.SHOW_DATAPROPERTIES).size();            totalIndividuals = swoopModel.getEntitySet(ont, swoopModel.TRANSCLOSE_ONT, this.SHOW_INDIVIDUALS).size();            totalAnnotatedProps = swoopModel.getEntitySet(ont, swoopModel.TRANSCLOSE_ONT, this.SHOW_PROPERTIES).size() - totalDataProps - totalObjProps;//          *****************************************************			//Added for rules			//*****************************************************            if (!swoopModel.getRuleExpr().getRuleMap().isEmpty()) { //there are rules			URI swrlVariableURI;			try {				swrlVariableURI = new URI(						"http://www.w3.org/2003/11/swrl#Variable");			URI swrlClassPredURI = new URI(					"http://www.w3.org/2003/11/swrl#classPredicate");			URI swrlPropertyPredURI = new URI(					"http://www.w3.org/2003/11/swrl#propertyPredicate");						// number of instances of variables to be removed			int numberOfVariables = swoopModel.getReasoner().allInstancesOf(					swoopModel.getSelectedOntology().getClass(swrlVariableURI)).size();			numberOfInstances =- numberOfVariables;			totalIndividuals =- numberOfVariables;			Set setPredicates = new HashSet();			// number of instances of classPredicates to be removed			int numberOfClassPredicates = 0;			OWLObjectProperty prop1 = (OWLObjectProperty) swoopModel					.getSelectedOntology().getObjectProperty(swrlClassPredURI);			if (!(prop1 == null)) {				Set objects1 = prop1.getUsage(swoopModel.getSelectedOntology());				for (Iterator it1 = objects1.iterator(); it1.hasNext();) {					OWLEntity entity = (OWLEntity) it1.next();					if (entity instanceof OWLIndividual) {						Map objects2 = ((OWLIndividual) entity)								.getObjectPropertyValues(swoopModel										.getSelectedOntology());						numberOfClassPredicates =+ ((Set) objects2.get(prop1)).size();					}				}			}			numberOfInstances =- numberOfClassPredicates;			totalIndividuals =- numberOfClassPredicates;			// number of instances of property predicates to be removed			int numberOfPropPredicates = 0;			prop1 = (OWLObjectProperty) swoopModel.getSelectedOntology()					.getObjectProperty(swrlPropertyPredURI);			if (!(prop1 == null)) {				Set objects1 = prop1.getUsage(swoopModel.getSelectedOntology());				for (Iterator it1 = objects1.iterator(); it1.hasNext();) {					OWLEntity entity = (OWLEntity) it1.next();					if (entity instanceof OWLIndividual) {						Map objects2 = ((OWLIndividual) entity)								.getObjectPropertyValues(swoopModel										.getSelectedOntology());						numberOfPropPredicates =+ ((Set) objects2.get(prop1)).size();							}				}			}			numberOfInstances =- numberOfPropPredicates;			totalIndividuals =- numberOfPropPredicates;			// number of classes to be removed			Set setOfClasses = ont.getClasses();			for (Iterator it1 = setOfClasses.iterator(); it1.hasNext();) {				OWLClass c = (OWLClass) it1.next();				if (c.getURI().getPath().equals("/2003/11/swrl")) {					numberOfClasses--;					totalClasses--;				}								}//			 number of object properties to be removed			Set setOfObjectProps = ont.getObjectProperties();			for (Iterator it1 = setOfObjectProps.iterator(); it1.hasNext();) {				OWLObjectProperty p = (OWLObjectProperty) it1.next();				if (p.getURI().getPath().equals("/2003/11/swrl")) {					numberOfObjectProperties--;					totalObjProps--;				}								}			}															catch (URISyntaxException e) {				// TODO Auto-generated catch block				e.printStackTrace();			}			            }			/*			 * END Rules code			 */									            statsText = "OWL Ontology "+swoopModel.shortForm(ont.getLogicalURI()).toString()+NEWLINE;            statsText += "Logical URI: "+ont.getLogicalURI().toString()+NEWLINE;            statsText += "Physical URL: "+ont.getPhysicalURI().toString()+NEWLINE;            statsText += HLINE;                        statistics.print("<br><br><b>Total Number of Classes:</b> ");            statistics.print(String.valueOf(totalClasses));            statistics.print("&nbsp;(Defined: "+String.valueOf(numberOfClasses) + ",&nbsp;Imported: "+String.valueOf(totalClasses-numberOfClasses)+")");                        statsText += "Total Number of Classes: "+String.valueOf(totalClasses)+ " (Defined: "+String.valueOf(numberOfClasses) + ", Imported: "+String.valueOf(totalClasses-numberOfClasses)+")"+NEWLINE;            	

⌨️ 快捷键说明

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