⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treerenderer.java

📁 Semantic Web Ontology Editor
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		// put class tree in cache		swoopModel.getClassTreeCache().putTree(ontology, reasoner, classTree);		System.out.println(ontology.getURI() + " class tree put in cache");		return classTree;	}	SwoopTreeNode createClassTree( Set concepts, Set ancestors ) throws OWLException {		if (concepts.contains(owlNothing))			return null;		SwoopTreeNode root = createNode(concepts);				if (concepts.isEmpty())			return root;		SwoopReasoner reasoner = swoopModel.getReasoner();		Object obj = concepts.iterator().next();				if (obj instanceof OWLClass) 		{			OWLClass c = (OWLClass) obj;//			 filter rules classes Impl, ClassAtom, IndividualPropertyAtom,			// etc.			if (c.getURI().getPath().equals("/2003/11/swrl"))				return null;			Set subs = reasoner.subClassesOf(c);			Iterator i = subs.iterator();			ancestors.add( concepts );						while (i.hasNext()) 			{				Set set = (Set) i.next();				if (set.contains(c))					continue;				SortedSet sortedSet = orderedEntities(set);								// if ancestors set contains the subclass set then we have a cycle				if ( ancestors.contains( set ) )				{					root.addUserObject( SwoopTreeNode.IS_IN_CYCLE, SwoopTreeNode.TRUE );					OWLClass cycleHead = (OWLClass)set.iterator().next();					root.addUserObject( SwoopTreeNode.CYCLE_HEAD, cycleHead );					continue;				}				SwoopTreeNode node = createClassTree(sortedSet, ancestors);								// do not add owl:Nothing to the tree				if (node != null) {					int index = 0;					for (; index < root.getChildCount(); index++) {						DefaultMutableTreeNode child = (DefaultMutableTreeNode) root								.getChildAt(index);						SortedSet otherSet = (SortedSet) child.getUserObject();						OWLEntity c1 = (OWLEntity) sortedSet.first();						OWLEntity c2 = (OWLEntity) otherSet.first();						if (EntityComparator.INSTANCE.compare(								sortedSet.first(), otherSet.first()) < 0)							break;					}					root.insert(node, index);				}			}			ancestors.remove( concepts );		}		return root;	}	/**	 * Count the number of entities of a given type.	 * @param ontology The ontology to be inspected.  If swoopModel.getShowImports(),	 *        use the import closure.	 * @param entityType '0' for classes, '1' for properties (excluding Annotation 	 *        properties).	 * @return The number of entities.	 */	private int getEntityCount(OWLOntology ontology, int entityType) {		int count = 0;		try {			Set ontologies = Collections.singleton(ontology);			if (swoopModel.getShowImports()) {				ontologies = OntologyHelper.importClosure(ontology);			}			for (Iterator iter = ontologies.iterator(); iter.hasNext();) {				OWLOntology ont = (OWLOntology) iter.next();				switch (entityType) {				case 0:// class count					count += ont.getClasses().size();					break;				case 1:// prop count					count += ont.getDataProperties().size();					count += ont.getObjectProperties().size();					break;				}			}		} catch (OWLException ex) {			ex.printStackTrace();		}		return count;	}	SwoopTreeNode createNode(OWLEntity entity) {		return new SwoopTreeNode(Collections.singleton(entity));	}	SwoopTreeNode createNode(Set set) {		return new SwoopTreeNode(set);	}	private SortedSet orderedEntities(Set entities) {		SortedSet ss = new TreeSet(EntityComparator.INSTANCE);		ss.addAll(entities);		return ss;	}	public JTree getPropertyTree(JTree currentTree) throws Exception {		System.out.println("Create prop tree");		SwoopReasoner reasoner = swoopModel.getReasoner();		OWLOntology ontology = reasoner.getOntology();		JTree propTree = null;		Font newFont = new Font(swoopModel.getFontFace(), Font.PLAIN,				3 + 3 * Integer.parseInt(swoopModel.getFontSize()));		if (ontology == null)			return propTree;		propTree = swoopModel.getPropTreeCache().getTree(ontology, reasoner);		// check if ontology is in cache -> get property tree from cache		if (propTree != null) {			propTree.setFont(newFont);			System.out.println("loading prop tree from cache");			return propTree;		}		OWLClass owlThing = ontology.getOWLDataFactory().getOWLThing();		SwoopTreeNode root = createNode(owlThing);		propTree = new JTree(new DefaultTreeModel(root));		propTree.setFont(newFont);		propTree.setCellRenderer(treeCellRenderer);		propTree.setLargeModel(true); // resize qname toggle node labels		SortedSet set = orderedEntities(reasoner.getProperties());//		 filter rules properties argument1, argument2, body, classPredicate,		// etc.		for (Iterator it = set.iterator(); it.hasNext();) {			OWLEntity entity = (OWLEntity) it.next();			if (entity.getURI().getPath().equals("/2003/11/swrl") )				it.remove();				}		Iterator i = set.iterator();		while (i.hasNext()) {			OWLProperty prop = (OWLProperty) i.next();			Set eqProps = reasoner.equivalentPropertiesOf(prop);			Set superProps = reasoner.superPropertiesOf(prop);			if (superProps.size() > 0)				continue;			eqProps.add(prop);			root.add(createPropertyTree(eqProps));		}		propTree.setModel(new DefaultTreeModel(root));		if (this.getEntityCount(ontology, 1) < Integer.parseInt(swoopModel				.getTreeThreshold())) {			// expand each node, if property count < threshold			for (int row = 1;; row++) {				if (propTree.getPathForRow(row) != null)					propTree.expandRow(row);				else					break;			}		} else {			// dont expand each node in tree			// check for current open nodes and expand only those			if (currentTree != null					&& this.useOldPropertyTreeReferenceforExpansion) {				this.useOldPropertyTreeReferenceforExpansion = false;				Enumeration enu = currentTree						.getExpandedDescendants(currentTree.getPathForRow(0));				if (enu != null) {					while (enu.hasMoreElements()) {						TreePath path = (TreePath) enu.nextElement();						int row = currentTree.getRowForPath(path);						propTree.expandRow(row);					}				}			}		}		propTree.setRootVisible(false);		propTree.setShowsRootHandles(true);		propTree.setFont(newFont);		// put property tree in cache		swoopModel.getPropTreeCache().putTree(ontology, reasoner, propTree);		System.out.println(ontology.getURI() + " prop tree put in cache");		return propTree;	}	SwoopTreeNode createPropertyTree(Set props) throws OWLException {		SwoopTreeNode root = createNode(props);		Object obj = props.iterator().next();		if (obj instanceof OWLProperty) {			OWLProperty prop = (OWLProperty) obj;			SwoopReasoner reasoner = swoopModel.getReasoner();			Set subs = reasoner.subPropertiesOf(prop);			Iterator i = subs.iterator();			while (i.hasNext()) {				SortedSet set = orderedEntities((Set) i.next());				if (set.contains(prop))					continue;				SwoopTreeNode node = createPropertyTree(set);				int index = 0;				for (; index < root.getChildCount(); index++) {					DefaultMutableTreeNode child = (DefaultMutableTreeNode) root							.getChildAt(index);					SortedSet otherSet = (SortedSet) child.getUserObject();					OWLEntity c1 = (OWLEntity) set.first();					OWLEntity c2 = (OWLEntity) otherSet.first();					if (EntityComparator.INSTANCE.compare(set.first(), otherSet							.first()) < 0)						break;				}				root.insert(node, index);			}		}		return root;	}	private String getShortForm(URI uri) {		return shortFormProvider.shortForm(uri);	}	/**	 * @return Returns the shortFormProvider.	 */	public ShortFormProvider getShortFormProvider() {		return shortFormProvider;	}	/**	 * @param shortFormProvider	 *            The shortFormProvider to set.	 */	public void setShortFormProvider(ShortFormProvider shortFormProvider) {		this.shortFormProvider = shortFormProvider;	}	public void setSwoopModel(SwoopModel swoopModel) {		this.swoopModel = swoopModel;	}	public void removeClassTreeCacheEntry(OWLOntology ont) {		swoopModel.getClassTreeCache().removeOntology(ont);	}	public void removeClassTreeCacheEntry(OWLOntology ont,			SwoopReasoner reasoner) {		swoopModel.getClassTreeCache().putTree(ont, reasoner, null);	}	public void removePropTreeCacheEntry(OWLOntology ont) {		swoopModel.getPropTreeCache().removeOntology(ont);	}	public void removePropTreeCacheEntry(OWLOntology ont, SwoopReasoner reasoner) {		swoopModel.getPropTreeCache().putTree(ont, reasoner, null);	}		public void export( JTree tree, String type, File file, SwoopModel model)	{ TreeSerializer.export( tree, type, file, model); }	}

⌨️ 快捷键说明

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