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(" (Defined: "+String.valueOf(numberOfClasses) + ", 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 + -
显示快捷键?